Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизЗапись структуры в файл Найти похожие ветки
← →
mr.Spok (2005-06-05 14:46) [0]Есть такая структура:
type PGeoFile = ^GeoFile;
На форме есть компонент TreeView. Требуется записать его некоторые параметры в файл:
GeoFile = record
ItemName:string[30];
ItemFunction:string[30];
ItemDescription:string[30];
end;procedure TForm1.ButtonWriteClick(Sender: TObject);
var i:integer; f : file of PGeoFile; ptr:PGeoFile;
begin
New(ptr);
AssignFile(f,FileName);
Rewrite(f);
for i:=0 to TreeView.Items.Count-1 do
begin
ptr^.ItemName := TreeView.Items.Item[i].Text;
ptr^.ItemFunction := "";
ptr^.ItemDescription := "";
Write(f,ptr);
end;
Dispose(ptr);
CloseFile(f);
end;
...и считать из файла:procedure TForm1.ButtonReadClick(Sender: TObject);
var i:integer; f : file of PGeoFile; ptr:PGeoFile;
begin
New(ptr);
AssignFile(f,FileName);
Reset(f);
while not EOF(f) do
begin
Read(f,ptr);
TreeView.Items.Add(nil,ptr^.ItemName);
.........
end;
CloseFile(f);
Dispose(ptr);
end;
При нажатии кнопки ButtonWrite в файл что-то записывается. А при чтении (ButtonRead) выдаются какие-то ошибки типа "Access violation at adress.." и др.
Может быть у меня в коде что-то не так?
← →
begin...end © (2005-06-05 14:52) [1]> mr.Spok (05.06.05 14:46)
> Read(f,ptr)
Read(f, ptr^)
← →
begin...end © (2005-06-05 14:55) [2]А, нет, извините. Дело даже не в этом. А в том, что в файл вместо данных записываются указатели на них. Что мешает сделать файл file of TGeoFile, объявить переменную типа TGeoFile и читать/записывать именно её?
← →
BugMaker (2005-06-05 15:00) [3]TGeoFile = packed record
F: file of TGeoFile
← →
Anatoly Podgoretsky © (2005-06-05 16:09) [4]
Write(f,ptr^);
Read(f,ptr^);
← →
begin...end © (2005-06-05 16:11) [5]> Anatoly Podgoretsky © (05.06.05 16:09) [4]
Тогда и тип файла нужно исправить.
← →
Anatoly Podgoretsky © (2005-06-05 16:18) [6]Ой, не обратил внимания, не думал там о ткаой дурости, как файл указателей.
На самом деле код очень нехороший, надо делать как в [2]
← →
mr.Spok (2005-06-05 16:53) [7]указатель на структуру пришлось использовать потому, что я туда загоняю данные через TreeView.Items.Item[1].Data : pointer;
← →
DiamondShark © (2005-06-05 16:55) [8]Но в файл-то зачем писать указатель?
← →
mr.Spok (2005-06-05 17:04) [9]Насчёт [2] я так понял нада так:
GeoFile = record
ItemName:string[30];
ItemFunction:string[30];
ItemDescription:string[30];
end;
type TGeoFile = GeoFile;
.....
var F: file of TGeoFile, ptr:TGeoFile;
begin
Write(f,ptr);
Read(f,ptr);end;
А что такое [3]:packed record?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c