Форум: "Начинающим";
Текущий архив: 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.006 c