Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Запись структуры в файл   Найти похожие ветки 

 
mr.Spok   (2005-06-05 14:46) [0]

Есть такая структура:
type PGeoFile = ^GeoFile;
    GeoFile = record
              ItemName:string[30];
              ItemFunction:string[30];
              ItemDescription:string[30];
              end;
На форме есть компонент TreeView. Требуется записать его некоторые параметры в файл:

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1118082192
capkoh
2005-06-06 22:23
2005.06.29
Массив указателей или компонентов?


1-1118058494
Aleksandr.
2005-06-06 15:48
2005.06.29
Что может быть причиной невыгрузки библиотеки?


1-1118081025
redlord
2005-06-06 22:03
2005.06.29
регулярные выражения


14-1117707479
12DFBDDh
2005-06-02 14:17
2005.06.29
Он лайн библиотека "Архивариуса"


3-1115984454
tema
2005-05-13 15:40
2005.06.29
Поиск без locate