Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сохранение\чтение в\из файла


Страницы:   1 2

Начинающий93 ©   (2009-04-29 15:11:00) 

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


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

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


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


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

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

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

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


Anatoly Podgoretsky   (2009-04-29 16:13:00) [2]


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

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


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


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


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


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


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


Да


clickmaker   (2009-04-29 15:51:00) [5]

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

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


Palladin   (2009-04-29 15:50:00) [6]

Write(f,p^)


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


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


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


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

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

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


clickmaker   (2009-04-29 15:41:00) [9]

> ParentRec: PRec1;

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


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

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


P: PRec1;

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


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


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

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


Palladin   (2009-04-29 15:32:00) [12]

у тебя есть

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


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


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

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


Palladin   (2009-04-29 15:28:00) [14]

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


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


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


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


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


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


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


Palladin   (2009-04-29 15:25:00) [17]

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


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

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


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


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


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

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

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


Palladin   (2009-04-29 15:14:00) [20]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо