Главная страница
    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.46 MB
Время: 0.033 c
3-1116167981
anton_m
2005-05-15 18:39
2005.06.29
Вопрос по StoredProc


14-1117694379
12DFBDDh
2005-06-02 10:39
2005.06.29
файлы djvu


1-1118319200
john_mag
2005-06-09 16:13
2005.06.29
OnClose


9-1111255090
Кирилл
2005-03-19 20:58
2005.06.29
GLScene


4-1114425641
Leonid
2005-04-25 14:40
2005.06.29
Как определить версию Windows ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский