![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись/чтение массива типа Recored в/из файла через TFileStream [D6, Win2k, WinXP]
Fostr © (2005-11-11 18:18:00)Господа! Вопрос такой: Нажимаем кнопку и данные из TListBox-а пишутся в файл через TFileStream. Эти данные - есть массив из 6 чисел типа "запись". Вот код:
procedureTForm1.Button3Click(Sender: TObject);
var
F: TFileStream;
ListOfFiles: FileList;
I: Integer;
begin
F:=TFileStream.Create('Lst.dat',fmCreate);
ForI:=0 toListBox1.Count-1 do
begin
ListOfFiles.List[I]:= ListBox1.Items[I];
end;
F.Write(ListOfFiles,SizeOf(ListOfFiles.List));
F.Free;
end;
Нажимая вторую кнопочку я хочу эти данные из файла загрузить обратно в TListBox:
procedureTForm1.Button4Click(Sender: TObject);
var
F: TFileStream;
ListOfFiles: FileList;
I: Integer;
beginF:=TFileStream.Create('Lst.dat',fmOpenRead);
F.Read(ListOfFiles,SizeOf(ListOfFiles.List));
F.Free;
ForI:=0 to5 do
begin
ListBox1.Items.Strings[I]:=ListOfFiles.List[I];
end;
end;
Пока у меня ЯВНО указан размер массива типа запись
Type
FileList = Record
List: array [0..5] of String[12];
end;
ВСЕ ЧУДНЕНЬКО РАБОТАЕТ. Но стоит только массив сделать динамическим, начинают выпадать ошибки и в файл пишется черт знает что (НЕСМОТРЯ НА ТО, ЧТО Я ОБЪЯВЛЯЮ ЕГО ДЛИНУ В ПРОЦЕССЕ ВЫПОЛНЕНИЯ ПРОГРАММЫ).
Пршу помощи в решении этой загадки!
begin...end (2005-11-11 20:33:00) [1]> Fostr (11.11.05 18:18)
Переменная динамического массива представляет собой указатель на блок памяти, в котором расположены элементы массива. Дело в этом.
Fostr (2005-11-11 20:29:00) [2]List: array of String[12]
( какая будет разница в результате) заранее спасибо
SPV (2005-11-11 18:49:00) [3]Массив какой
List: array of String;
или
List: array of String[12];