Запись чисел в файл
type MyRecType = record
field1: string[10];
field2: byte;
end;
var
TMyRecType: array [1..n] of MyRecType {короч массив записей, может не совсем правильно описала}
есть файл
f: file of TMyRecType;
Так вот когда я делаю запись в файл (присоединенный, открытый, здесь ошибок и проблем нет), строковое поле он записывает, а числа ни в какую (каких бы типов они не были Integer,Word и т.д.). Пробовала просто записывать числовые переменные в файл, тоже не получается. Везде вместо числа записывает даже не пробел, а пустой символ!
В чем может быть проблема?
в общем виде это выглядит примерно так....
F: File;
MyRec: TMyRecType;
I: Integer;
begin
AssignFile(F, FileName);
Rewrite(F, 1);
for I := 1 to n do
BlockWrite(F, MyRec, SizeOf(MyRecType));
CloseFile(F);
end;
но советую делать всё это через потоки...
И через потоки это как?
Везде вместо числа записывает даже не пробел, а пустой символ!
А если русскую смекалку применить? Открываем файл на просмотр в Far (через F3), нажимаем F4, чтобы переключиться в режим hex-дампа. На месте твоего числа будет код 00 (или 01, или что ты там присваивашь).
И в чем, собственно, проблема?
Var field2:String[3];
field2:=IntToStr(число); //целые числа
field2:=FloatToStr(число); //с плавающей точкой
Если строки записывает, то почему бы числа в строки не переделать:
Var field2:String[3];
field2:=IntToStr(число); //целые числа
field2:=FloatToStr(число); //с плавающей точкой
Это геморрой, тяжеловесный код получается! У меня половина циклов и параметров, передаваемых процедурам и функциям зависят от этих значений (в случае моей программы это структура собственной базы данных)...хотя видимо больше вариантов нет =(
интересно было бы исходный код глянуть.... )))
в общем виде это выглядит примерно так....
F: File;
MyRec: TMyRecType;
I: Integer;
begin
AssignFile(F, FileName);
Rewrite(F, 1);
for I := 1 to n do
BlockWrite(F, MyRec, SizeOf(MyRecType));
CloseFile(F);
end;
но советую делать всё это через потоки...
кстати так тоже ничерта не получается! я даже пробовала по одной переменной записывать таким образом в отдельной программе, результат такой же, то есть цифру он все равно не записывает! я просто в панике...может с настройками что-нить не так...хотя я слабо представляю, как это взаимосвязано! у меня Delphi 6 (просьба не смеяться над стариной ):}
А если русскую смекалку применить? Открываем файл на просмотр в Far (через F3), нажимаем F4, чтобы переключиться в режим hex-дампа. На месте твоего числа будет код 00 (или 01, или что ты там присваивашь).
И в чем, собственно, проблема?
Проблема в том, что мне нужно эти данные считать той программой для создания различных циклов, структур и т.д.
Есть человеческий вариант? В Паскале почему-то все прекрасно записывается и читается, а в Делфи ну никак :-?
только здесь без массива, но сохраняет и читает все нормально...
В Паскале почему-то все прекрасно записывается и читается, а в Делфи ну никак :-?
Нихрена не могу понять в чём твоя проблема...
type
TMyRecType = record
field1: string[10];
field2: byte;
end;
...
//запись в файл
procedure TForm1.Button1Click(Sender: TObject);
var
my: TMyRecType;
F: File of TMyRecType;
begin
my.field1 := Edit1.Text;
my.field2 := Byte(StrToInt(Edit2.Text));
AssignFile(F, 'C:\1.dat');
Rewrite(F);
Write(F, my);
CloseFile(F);
end;
...
//чтение из файла
procedure TForm1.Button2Click(Sender: TObject);
var
my: TMyRecType;
F: File of TMyRecType;
begin
AssignFile(F, 'C:\1.dat');
Reset(F);
Read(F, my);
CloseFile(F);
Edit1.Text := my.field1;
Edit2.Text := IntToStr(my.field2);
end;
...