私はDelphiPrismを使用しており、次のようにBinaryWriterを使用してバイナリファイルを作成および書き込みています。
method TUnit.Write(bw:BinaryWriter);
var
i:Integer;
begin
bw.write(ord(uType));
bw.Write(ord(State));
bw.Write(Address);
bw.Write(SubAddress);
for i:=1 to 20 do
bw.Write(fDefs[i]);
end;
あなたへの私の質問はこれです。writeメソッドは、改行またはキャリッジリターンを使用せずに、行ごとに行を書き込むか、バイトごとにバイトを書き込むか、文字を次々に書き込みますか?
私がこの質問をしている理由は、文字の配列のような特定の文字数なしで文字列を読み書きすることに関して私が混乱しているからです。
例えば:
method WritetoFile;
var
x:integer;
thestr:string;
begin
BinaryWriter thefile := new BinaryWriter(File.Create("test.dat"));
thefile.write(thestr);
thefile.write(x);
thefile.Close;
end;
method ReadFromFile;
var
x:integer;
thestr:string;
begin
BinaryReader thefile := new BinaryReader(File.OpenRead("test.dat"));
thestr:=thefile.ReadString;
x:=thefile.ReadInt32;
thefile.Close;
end;
それが私のプログラムを書いた方法であり、それはうまくいくようですが、私が言ったように私は混乱しています。
文字列データ型の場合、読み取りまたは書き込みに特定の長さの数値を指定せずに、読み取りまたは書き込みに使用するバイト数または文字数をどのように知ることができますか?