Главная страница
    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.49 MB
Время: 0.005 c
15-1239183575
rulllesss
2009-04-08 13:39
2009.06.21
SmartClient для Делфи


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


2-1241037428
бульдозер
2009-04-30 00:37
2009.06.21
как зная ID процесса получить хендл окна этого процесса


15-1239620213
ZeroDivide
2009-04-13 14:56
2009.06.21
Лицензионные фильмы


2-1240982320
Iriss
2009-04-29 09:18
2009.06.21
TSaveDialog





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