Главная страница
    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.037 c
14-1117979160
Kolan
2005-06-05 17:46
2005.06.29
Компилятор С для Pic контроллеров


3-1116321269
_Max
2005-05-17 13:14
2005.06.29
DBGrid - строки разной высоты


14-1117212893
Yozh_Programmer
2005-05-27 20:54
2005.06.29
Помогите найти уязвимое место в проге для БД


1-1118108863
paule
2005-06-07 05:47
2005.06.29
Передача указателя формы в процедуру dll


1-1117786816
User1
2005-06-03 12:20
2005.06.29
Зашищаем данные в потоках





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