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

Вниз

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

 
Начинающий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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.016 c
15-1240086603
Юрий
2009-04-19 00:30
2009.06.21
С днем рождения ! 19 апреля 2009 воскресенье


15-1240173002
Юрий
2009-04-20 00:30
2009.06.21
С днем рождения ! 20 апреля 2009 понедельник


15-1239615526
vajo
2009-04-13 13:38
2009.06.21
Затруднения с Excel


2-1240937555
Андрей (начинающий)
2009-04-28 20:52
2009.06.21
как заставить мигать иконку


15-1239829821
dmk
2009-04-16 01:10
2009.06.21
Совместный доступ





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