5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

モナーの *やさしい* Delphi質問スレ Ver.14

386 :デフォルトの名無しさん:03/04/19 19:18
StringをTFileStreamをつかってファイルに読み書きしようと思っています。
「書き」の方は
str : String ;
i : integer ;
begin
str := 'test message' ;
fs := TFileStream.Create('test.txt', fmOpenWrite);
try
 i := Length(str);
 fs.Write(i,SizeOf(integer));
 fs.Write(pointer(str)^, i);
finally
 fs.Free;
end;
end;
で書き込めたんですが
再びStringに読み出す方法がわかりません。
fs.Read(i,SizeOf(integer));
fs.Read(str,i);
ではstrを使おうとするとEAccessViolationエラーになってしまいます。
理由はわかっています。
strは文字列のある場所を示すアドレスの入れ物にすぎないからReadで文字列を直接書き込んではいけない・・。
どうやったらうまく読み出せるんでしょうか・・。

TStringListとかを使えば悩まなくてすむんですが
将来的に他の型のデータも一緒に書き込む予定ですのでなるべくならTFileStreamで行いたいと思ってます。
どなたかご助言ください。

※余談ですが今回の件で初めてString型がポインタのようなものだという事を知りました。
手元にあるDel3の本の説明でのString型はいわゆるShortString型だったのでうまく保存できずかなり悩みました。

209 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)