喫茶XRAYトップページ


[13350] ファイルハンドル返信 削除
2020/5/13 (水) 21:41:18 Mr.XRAY
[ AssignFileされたファイルを (長いので以下省略) ]
https://www.petitmonte.com/bbs/answers?question_id=29717

にレスしたんですが,
もしかしたら,ファイルハンドルの概念を知らないのでは ?
と思い,あわてて追加レスしました.
最初からファイルハンドルが,ファイルが開いた状態になってしうまとレス
すべきだったかも知れません.反省.

何が分からないのかを知るのは難しい・・・・ 面倒くさい.
「めんどくさくて性格悪いのはお前だ !! 」ですか ?
まっ,確かに.ハハハッ.


[13351] Re:ファイルハンドル返信 削除
2020/5/13 (水) 21:51:10 Mr.XRAY
> 最初からファイルハンドルが,ファイルが開いた状態になってしうまとレス
> すべきだったかも知れません.反省.


実は最初,そう思ったんです.
でもですね.テキストファイル扱っていて型なしファイルだったもんで,
そちらに気を取られて・・・
言い訳ですが.

個人的には TextFile もあまり使わない方がいいのかと.
目的にもよるとは思いますが.


[13352] 型なしファイルでテキスト返信 削除
2020/5/14 (木) 11:14:42 Mr.XRAY
テキストを型なしファイルで扱う必要性については分かりませんが,
型なしファイルでテキストを扱う例です.
Char 型の文字配列の方が便利かも知れませんが,string 型のコードにしています.

procedure TForm1.Button1Click(Sender: TObject);
var
  LFilePath : string;
  LTextFile : File;
  LSrcText  : string;
  LDstText  : string;
  LSrcLen   : Integer;
  LWriteLen : Integer;
begin
  // このサンプルでは 000.txt はテキストファイルではない
  LFilePath := '000.txt';

  System.Assignfile(LTextFile, LFilePath);
  System.Rewrite(LTextFile);

  System.Assignfile(LTextFile, LFilePath);
  System.Rewrite(LTextFile);

  LSrcText := 'テスト文字列-BBB';
  LSrcLen := Length(LSrcText) * SizeOf(Char);
  System.BlockWrite(LTextFile, LSrcText[1], LSrcLen, LWriteLen);

  SetLength(LDstText, LWriteLen div SizeOf(Char));

  System.Reset(LTextFile, 1);
  System.BlockRead(LTextFile, LDstText[1], LWriteLen);
  ShowMessage(LDstText);

  System.CloseFile(LTextFile);
end;



[13353] テキストをバイナリ形式で保存返信 削除
2020/5/14 (木) 15:51:41 Mr.XRAY
> テキストを型なしファイルで扱う必要性については分かりませんが,

なるほど,バイナリ形式で保存したいわけでしたか.
そう言えば,テキストをバイナリ形式で保存したい,という質問がありました.
この方法があったんですね.
気付きませんでした.


> ゴメンナさい.EXE を終了するとファイルハンドルは解放されていますね.
> ファイルハンドルが有効なのはアプリ実行中だけのようです.


私ってホント性格悪いね.実感.


INCM/CMT
Cyclamen v3.82