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

Вниз

сохранение чтение в из файла   Найти похожие ветки 

 
Начинающий93   (2009-04-29 15:11) [0]

столкнулся с проблемой: имеется 2 записи


PRec1 = ^TRec;
 TRec1 = record
   { список полей }
 end;

 PRec2 = ^TRec2;
 TRec2 = record
   ParentRec: PRec1;
 end;


2-я запись содержит ссылку на 1-ю. Возможно ли сохранить\считать запись в\из файла


 
Ega23 ©   (2009-04-29 15:13) [1]

Возможно всё.


 
Медвежонок Пятачок ©   (2009-04-29 15:13) [2]

Сам то как думаешь?


 
Palladin ©   (2009-04-29 15:14) [3]

а что мешает... считывай\сохраняй...


 
Запомни Сынок   (2009-04-29 15:23) [4]

Вы все ошибаетесь
Байты помещенные в PRec2 оказываются в зоне сильного гравитационного поля сравнимого с полем черной дыры.

При этом вынуть их в файл нет никакой физической возможности.


 
Начинающий93   (2009-04-29 15:23) [5]

Только пару дней начал изучать указатели. Поэтому не все ясно. В какой-то книге раньше читал что указатели сохранять нельзя.


> а что мешает... считывай\сохраняй...


Подскажите где посмотреть приблизительный алгоритм сохранения.


 
Palladin ©   (2009-04-29 15:25) [6]

расскажи, как ты понимаешь, что есть - указатель?


 
Начинающий93   (2009-04-29 15:25) [7]


> При этом вынуть их в файл нет никакой физической возможности.


А как тогда быть. Дали лабу... сделать сохранение/чтение структуры описанной выше в файл


 
Начинающий93   (2009-04-29 15:28) [8]


> расскажи, как ты понимаешь, что есть - указатель?


переменная которая хранит адрес ячейки памяти с определенным содержимым


 
Palladin ©   (2009-04-29 15:28) [9]

Прально. Адрес. А как этот адрес получают?


 
Начинающий93   (2009-04-29 15:30) [10]

так кажется @<переменная>


 
Palladin ©   (2009-04-29 15:32) [11]

у тебя есть

PRec1 = ^TRec;
TRec1 = record
  { список полей }
end;


как ты будешь работать с этим?


 
Запомни Сынок   (2009-04-29 15:32) [12]

Нужно использовать PRec3, а не PRec2


 
Начинающий93   (2009-04-29 15:40) [13]

Я думал записывать в Stream и сохранять:


P: PRec1;

Write(P^.<поле>, SizeOf(P^.<поле>));


Мне не понятно как сохранить поле (ParentRec: PRec1)  содержащее указатель. Нужно сохранять содержимое каждого поля записи на которую ссылаемся? т.е. Rec2^.ParentRec^.<поле> -> Write/read?


 
clickmaker ©   (2009-04-29 15:41) [14]

> ParentRec: PRec1;

должно быть что-то типа ParentRecID: integer у Rec2 и RecID у Rec1
тогда сохранив записи по отдельности, при восстановлении их можно снова связать


 
Медвежонок Пятачок ©   (2009-04-29 15:41) [15]

Нужно сохранять содержимое каждого поля

ТОлько если они физически расположены не в непрерывном куске памяти


 
Начинающий93   (2009-04-29 15:48) [16]


> должно быть что-то типа ParentRecID: integer у Rec2 и RecID
> у Rec1тогда сохранив записи по отдельности, при восстановлении
> их можно снова связать


можете набросать небольшой пример. Просто только начал изучать указатели.


 
Palladin ©   (2009-04-29 15:50) [17]

Write(f,p^)


 
clickmaker ©   (2009-04-29 15:51) [18]

> [16] Начинающий93   (29.04.09 15:48)

так а что нужно сохранить? только запись 2? вместе с содержимым записи 1?


 
Начинающий93   (2009-04-29 16:00) [19]


> так а что нужно сохранить? только запись 2? вместе с содержимым
> записи 1?


Да


 
Начинающий93   (2009-04-29 16:11) [20]


> clickmaker ©   (29.04.09 15:41) [14]
> > ParentRec: PRec1;должно быть что-то типа ParentRecID:
> integer у Rec2 и RecID у Rec1тогда сохранив записи по отдельности,
>  при восстановлении их можно снова связать


Все разобрался. То что надо. Спасибо. Тему можно закрывать.


 
Anatoly Podgoretsky ©   (2009-04-29 16:13) [21]


> Только пару дней начал изучать указатели. Поэтому не все
> ясно. В какой-то книге раньше читал что указатели сохранять
> нельзя.

Можно, но смысла нет. Смысл есть сохранять индекс и по нему строить связь.


 
Юрий Зотов ©   (2009-04-29 17:37) [22]

> Начинающий93   (29.04.09 16:11) [20]

Указатели сохранять можно, но какой в этом смысл?

Вот в файл записался адрес какого-то элемента в ТЕКУЩЕМ сеансе работы программы. В следующем сеансе программа читает этот адрес - но ведь по нему уже лежит что-то совершенно другое (или не лежит ничего).



Страницы: 1 вся ветка

Текущий архив: 2009.06.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
1-1211471281
a_priori
2008-05-22 19:48
2009.06.21
работа с таймером


15-1239829120
Petr V. Abramov
2009-04-16 00:58
2009.06.21
Microsoft Office 2010: первые скриншоты


15-1239980765
Мазут Береговой
2009-04-17 19:06
2009.06.21
Unicode и его конвертация


2-1241003506
Начинающий93
2009-04-29 15:11
2009.06.21
сохранение чтение в из файла


15-1239792220
Kerk
2009-04-15 14:43
2009.06.21
Оптимизация интерфейса пользователя