Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.051 c
1-1117613658
Crazy_Diman
2005-06-01 12:14
2005.06.29
Photoshop


4-1114577998
bobah
2005-04-27 08:59
2005.06.29
Невидимый курсор мыши


3-1116504029
makaron_x
2005-05-19 16:00
2005.06.29
Как добраться к значению поля через отображающий его DBText?


4-1115318045
bc0113
2005-05-05 22:34
2005.06.29
FreeLibrary


8-1109731660
dr_ollo
2005-03-02 05:47
2005.06.29
DSPack регулировка яркости и контрастности в тюнере





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский