Я работаю с Delphi Prism и создаю и записываю в двоичный файл, используя 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;
Вот как я написал свою программу, и она, кажется, работает нормально, но, как я уже сказал, я в замешательстве.
Как он узнает, сколько байтов или символов длина для чтения или записи, когда он является строковым типом данных, не задавая ему конкретные числа длины для чтения?