uintFileReadArray(
int file_handle, // handle файлаvoid array[], // массив для записиint start_item=0, // с какой позиции массива писатьint items_count=WHOLE_ARRAY// сколько читать
);
boolFileCopy(
string src_filename, // имя файла-источникаint common_flag, // место действияstring dst_filename, // имя файла назначенияint mode_flags // способ доступа
);
長い間、ファイル操作をしていなかったので......。ほら、FileOpen()を使うと、CSV形式のファイルが宣言 されているでしょ。以前は、書き込まれた項目はすべてユニコードまたはアンシ文字列に変換されるように指定されていました。も しかして、ここが犬の居場所?
糞ウィニペッ!!!
そこに「埋没」しているのです :)FILE_ANSI パラメータを追加したら、すべてがスムーズにいきましたよ。
FileOpen("価格表" +_Symbol+tpl_ext,FILE_READ|FILE_CSV|FILE_ANSI,';',CP_ACP);
Yedelkin さん、 TheXpert さん 情報 ありがとうございます!!!!:)
is_vale:
...デバッガで見たところ(sTF変数では、ファイルの内容をunicodeとして読んでいます!)。ファイルを開く ときに、可能な限りのコードページを試しましたが、結果は同じです :( ファイル自体はWindowsのエンコーディングで書かれています。
どなたか、問題の所在をご存知の方はいらっしゃいますか?
デフォルトでは、UNICODEで 書かれています。そこで、FILE_ANSI フラグを設定します。
デフォルトでは、UNICODEで 書かれています。したがって、FILE_ANSI フラグを設定します。
array[]のサイズについての質問:FileReadArray()で使用する前にarray[]のサイズを設定すべきでしょうか、それとも「端末実行システム」が 対処してくれるのでしょうか?
いいえ、この機能は、ファイル内の必要なデータ量に対してメモリを分配します。
ちなみに、単純な構造 体の配列も、そこに書かれていれば、同じように読むことができます。
FileReadArray() 関数は保存されたデータの種類を認識しないので注意が必要です。これは特徴の一つで、重複して保存してコロケーションとして読み、ビットにパース することが可能です。
かっこいい。
FileReadArray() 関数は保存されたデータの型を認識しないので、注意が必要です。これは特徴の一つで、重複して保存して浮動小数点として読み、ビットにパース することが可能です。
つまり、保存時と読み込み時の配列は同じ型であるべきということですね?これでいいのか?
かっこいい。
つまり、保存時と読み込み時の配列は同じ型でなければならない、ということでよろしいでしょうか?それでいいのか?
はい。
説明にはこう書いてある。
common_flag
[in] ファイルの場所を定義するフラグ。common_flag=FILE_COMMONの場合、全クライアント端末の共有フォルダにファイルが存在する。それ以外の場合は、ローカルフォルダーにあります。
説明にはこう書いてある。
ソースファイルが共有フォルダにある場合は、common_flag=FILE_COMMONで、クリアです。しかし、ファイルがローカル・フォルダにある場合、どのフラグを指定すればよいのでしょうか。common_flagパラメータはデフォルトではないので、いずれにせよ何らかの値を指定する必要があります。