ファイル – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

ファイル

固定ページ 2 / 3

wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

>if文が違うというのはどこがどう違うのか

については
キチンと回答者の方々のご意見見てますか?

>YuO [E-Mail] 2003/02/06(木) 21:31:04
>(ゥ? 2003/02/06(木) 22:15:14
に回答されている通りです

これをご理解いただけないのであれば
NEG(ねぐ) さんがお示しくださった場所での
内容をしっかり自分の物として学習し身につけてから
再度お越しくださいませ。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

...一体世の中ではなにが起こってるんだろ。
こんなんばっかや。


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

>...一体世の中ではなにが起こってるんだろ。
>こんなんばっかや。

世の中こんなんばっかなんですか...

私は,’このスレ’or'これに大変よく似たスレッド'
だけだと思いたいです...


返信引用
暇人貴子
 暇人貴子
(@暇人貴子)
ゲスト
結合: 22年前
投稿: 11
 

新しい課題でも出たのかな?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

マップさん、それならあってるのではないのですか?
何が違うのかが理解できません


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 23年前
投稿: 17
 

>何が違うのかが理解できません

ということは,あなたは

>if(FileName,*.M,I.*)

>もし、ファイルが**MとI.**だったら
を,意味すると思っているわけですね?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

そういう解釈なのですが違うのですか?
ごめんなさい・・何かいい例を書いてもらえないでしょうか?
勉強はしてるのですが、なかなか理解できず悩んでいます
本当に申し訳ございません


返信引用
暇人貴子
 暇人貴子
(@暇人貴子)
ゲスト
結合: 22年前
投稿: 11
 

>そういう解釈なのですが違うのですか?
失礼ながら、この程度のCの知識で
MFCを使うのは無謀と思われます。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

やれやれだ、自分の質問の仕方については考えてはくれないのですか?
あなたが何をしようとしていて、何がわからないのかが、あなたの発言からではわからないので
すが?

if 文は括弧内の式を評価して、『それが0以外か、0か』のみを判断します。
if 文自体にワイルドカード展開などという高水準な機能はありません。
自分が判定したいものを分解し、一つ一つ書いていく必要があります。
日本語で言うテニオハのような知識です。理解してください。

あなたは
if( a, 1 )
と書けば、『aが1ならば』と解釈されると思っているかもしれませんが、それはまったくの誤り
です。

『aが1ならば』なら、『aと1を比較し、その結果が真ならば』つまり
if ( a == 1 )
と書く必要があります。

入門書を読むなり。参考書を読むなり。正しく教えてくれない講師を問い詰めるなりして
正しく理解してください。

で、あなたが何を判定指定のしたいのかがよくわからないのですが、
とりあえず、『.』の前後の文字で処理を振り分けたいのだ、と、こちらで勝手に解釈します。

// 後ろから '.' を探す
int dot = Filename.ReverseFind('.');

// 見つからない、一番最後、一番最初の時はどうしようもないからかえる。

if( dot == 0 || dot == -1 || dot >= Filename.GetLength()) return;

// '.' の前と後の文字を取り出す。同時に比較を容易にするために大文字に変換。
int nextOfDot = _toupper( Filename.GetAt( dot+1 ));
int prevOfDot = _toupper( Filename.GetAt( dot-1 ));

// 前が M もしくは後が I なら
if(nextOfDot == 'M' || prevOfDot == 'I' ){
// ReadBinary
}
// そうではなく、前が T なら
else if(prevOfDot == 'T')
{
// ReadText
}


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

>ごめんなさい・・何かいい例を書いてもらえないでしょうか?

>もし、ファイルが**MとI.**だったら上のファイル読み込み、
>もし、t**というファイルなら下の読み込みに行くようにしたいです

もし x が 1 か 2 だったら XXX を、3 だったら YYY を行いたい

if ( x == 1 || x == 2 ) {
XXX;
} else if ( x == 3 ) {
YYY;
} else {
それ以外
}


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

失礼

テニオハ     → テニヲハ
判定指定のしたい → 判定したい


返信引用
joan
 joan
(@joan)
ゲスト
結合: 23年前
投稿: 42
 

if( (FileName == *.M) || ( FileName == I.*))

みたいな感じ。間違っていても判定式使って書いてくれた方が
まだわかりやすいです。* ってワイルドカードですよね?


返信引用
あしゅ
 あしゅ
(@あしゅ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

int i, j;
CFile* fp = ar.GetFile();
FileName = fp->GetFileName();
if(FileName == *.M || FileName == I.*)

{
if( fp->GetLength() < HEADER_SIZE ) {
return;
}
fp->Seek( HEADER_SIZE, CFile::begin );
unsigned short *y;
y = p;
for ( i=0; i<IMAGEDATA_SIZE; i++, y++)
{
fp->Read(y, sizeof( unsigned short ));
}
}
else if(FileName== t.*)
{
ifstream mystream;
if(FileName==a.*)
{
for( i = 0; i < NX; i++ ){
for( j = 0; j <NY; j++ ){
mystream >> Data[j][i];}}
}
}
これでよろしいのでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

だめです。PAIさんのリプライを読んでないでしょ。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

> (FileName == *.M || FileName == I.*)
質問1.ここで言っている'*'は、DOSで言う、ワイルドカードなのでしょうか?
    # '*' means for 0 or 1+ charactors.
質問2.FileName の型は何なんでしょう?

(A) '*'をワイルドカードとして扱いたい場合、かつFileName の型がCString型
である場合は、マッチすることはほとんどないでしょう。

(B) '*'をマッチし得る文字として、かつFileName の型がCString型である場合
は、マッチし得るでしょう。

'*'をワイルドカードとして扱いたい場合、かつ
> (FileName == *.M || FileName == I.*)
と書きたいならば、FileNameの型をCString型から派生するなどして、
==演算子をオーバーライドし、ワイルドカード比較可能なクラスを
自作する必要があります。
# ちなみに、σ(^^)はこのような機能を実装した自作クラスを使用しています。

Windows98/VC++6.0sp5pro/SDK-may2002/ATL3.0/WTL7.0


返信引用
固定ページ 2 / 3

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました