FDに格納するには?

解決


ボリュ!  2001-12-21 01:43:17  No: 384

CSV形式でFDに格納するPGを作成しているのですが、FDの空領域がなくなって
しまい”I/Oエラー”でコケてしまいます。
”2枚目をセットして下さい”のようなメッセージを出すにはどのようにすればいいですか?


にしの  2001-12-21 01:52:39  No: 385

CSVファイルがどこで切れてもよいのなら、ファイルのオープン、書き込みをtry exceptでくくって、
例外が発生したら「新しいディスクをセットしてください」と表示して復帰するようにすればできそうです。
CSVファイルのレコードに意味がある場合、さきにディスク空き容量を調べてそれから書き込めばよいです。

ディスク空き容量を調べるには、DiskFree関数を使用します。VCLのヘルプを見てください。


ボリュ!  2001-12-21 22:21:11  No: 386

Repeat
    try
      Rec := RS1.Item(0,'出荷先NO')
           + K + RS1.Item(0,'出荷先住所')
           + K + RS1.Item(0,'出荷先名称カナ')
           + K + RS1.Item(0,'消費税');
      Writeln(F, Rec);
      inc(i);
    except
      on EConvertError do
         begin
           showmessage('いっぱい')
         end
    end
  until RS1.QueryNext(0) = False;
  CloseFile(F);

にしの様
お返事ありがとうございます。
例外処理がうまくいきません。
上記のような処理なのですが、
何かアドバイスがあったら教えてください。
初歩的な質問で申し訳ありませんが、
よろしくお願いします。


にしの  2001-12-22 00:42:22  No: 387

こんな感じでしょうか。
すでに開いている場合のチェックがわからなかったので、とりあえず開けたらtrue、閉じたらfalseにしてます。

var AlreadyFileOpen: boolean;
begin
AlreadyFileOpen := False;
Repeat
  try
    if not AlreadyFileOpen then AssignFile(F, FileName);
    AlreadyFileOpen := True;

    Rec := RS1.Item(0,'出荷先NO')
    + K + RS1.Item(0,'出荷先住所')
    + K + RS1.Item(0,'出荷先名称カナ')
    + K + RS1.Item(0,'消費税');
    Writeln(F, Rec);
    inc(i);
  except
    if AlreadyFileOpen then CloseFile(F);
    AlreadyFileOpen := False;
    if Application.MessageBox('ディスクを変えてください', PChar(Application.Title), MB_OKCANCEL) = ID_CANCEL then
      break; // キャンセルなら中止
  end;
  if AlreadyFileOpen then CloseFile(F);


ボリュ!  2001-12-26 22:09:30  No: 388

たびたびのお返事ありがとうございます。
にしの様のお陰で無事作成出来ました。
未熟者なので、また何か分からない事がありましたら
質問させていただきます。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加