![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение динамического массива в файл [D7]
Mixail © (2008-01-10 15:06:00)Не подскажете ли, как сохранить в файл динамический массив, который является свойством объекта Record? Попытался с функцией SetLength(), но после сохранения и обратной загрузки данных из файла выводятся пустые строки.
Плохиш (2008-01-10 16:46:00) [41]
> Palladin © (10.01.08 16:41) [20]
Так ведь "Чем дальше в лес, тем толще партизаны" :-))
Palladin (2008-01-10 16:41:00) [42]
> [19] @!!ex © (10.01.08 16:38)
а count то на кой? [6] смотрел?
@!!ex (2008-01-10 16:38:00) [43]> [18] Mixail (10.01.08 16:24)
Че за идиотизм?? Ответили уже раз десять...
Уважаемый, послушайте Сергея, он вам дело говорит, учите матчасть, и втыкайте в различия между статическим и динамическим массивом...
type
MyRec=record
T:array of Items;
Count:integer;
end;
var
Index:integer;
begin
Write(Count);
for Index:=0 to Count-1 do
Write(T[Index]);
end;
Mixail (2008-01-10 16:24:00) [44]Юрий, имеешь ввиду целое число внутри Record? И как связать это целое число с самими элементами? Прошу совета.
Юрий Зотов (2008-01-10 16:17:00) [45]> Mixail
Запись файла:
1. Пишем в файл целое число длиной 4 байта (кол-во эл-тов в массиве)
2. Пишем сами элементы.
Чтение файла:
1. Читаем 4 байта в целую переменную.
2. Устанавливаем длину массива.
3. Читаем элементы массива.
Сергей М. (2008-01-10 15:56:00) [46]
> Mixail (10.01.08 15:52) [13]
Тебе, чукче, уже в [6] дали тот самый вожделенный совет)
Сергей М. (2008-01-10 15:55:00) [47]
> Mixail (10.01.08 15:52) [13]
> ты перепутал
Угу.
Который уже год путаю.
> применению динамического массива внутри объекта Record
Ничто не мешает этому применению.
Обычным образом оно осуществляется.
> и сохранению его в файл
см. [11]
Как только поймешь, так и вопросы сами по себе отпадут.
Palladin (2008-01-10 15:54:00) [48]:) чукча не читатель, чукча писатель
Mixail (2008-01-10 15:52:00) [49]Сергей М., по-моему ты перепутал этот форум с развлекательными. Никто не нуждается в оценке "потенциала понимания". Мне действительно нужен совет по применению динамического массива внутри объекта Record, и сохранению его в файл через TFileStream.
Сергей М. (2008-01-10 15:43:00) [50]
> Mixail (10.01.08 15:41) [10]
> я не указывал свой код
Ну и продолжай париться.
Сергей М. (2008-01-10 15:41:00) [51]
> При переводе того же массива на статический, данные сохраняются
Это означает только одно - ты не понимаешь разницы между статическим и динамическим массивами.
Mixail (2008-01-10 15:41:00) [52]"ошибка в 17й строке" кода своего автора, а я не указывал свой код
Плохиш (2008-01-10 15:32:00) [53]
> Mixail (10.01.08 15:28) [7]
Сказали же уже "ошибка в 17й строке"
Palladin (2008-01-10 15:30:00) [54]ошибся при записи... пусть будет заданием на дом...
Mixail (2008-01-10 15:28:00) [55]clickmaker, ни строки, ни цифры не сохраняются. При переводе того же массива на статический, данные сохраняются.
Palladin (2008-01-10 15:26:00) [56]
> [1] Евгений Р. (10.01.08 15:13)
ню ню...
> [3] Mixail (10.01.08 15:16)
ну у тебя ошибка в 17 строке...
Type
TMyRec=Record
a:Array of Integer;
b:Array of Byte;
End;
Procedure SaveRec(fs:TFileStream;r:TMyRec);
Var
n:Integer;
Begin
n:=Length(r.a);
fs.Write(n,SizeOf(n)*SizeOf(Integer));
fs.Write(r.a[0],n*SizeOf(Integer));
n:=Length(r.b);
fs.Write(n,SizeOf(n));
fs.Write(r.b[0],n);
End;
Procedure ReadRec(fs:TFileStream;Var r:TMyRec);
Var
n:Integer;
Begin
fs.Read(n,SizeOf(n));
SetLength(r.a,n);
fs.Read(r.a[0],n*SizeOf(Integer));
fs.Read(n,SizeOf(n));
SetLength(r.b,n);
fs.Read(r.b[0],n);
End;
чего сложного то?
clickmaker (2008-01-10 15:23:00) [57]"динамический массив" и "пустые строки" - это массив из String, что-ли?
Джо (2008-01-10 15:20:00) [58]Приведите объявление массива.
Mixail (2008-01-10 15:16:00) [59]Спасибо за совет, Евгений Р.
Попробую ваш вариант. Я применял TFileStream, но не получалось.
Palladin (2008-01-10 15:15:00) [60]
> Не подскажете ли, как сохранить в файл динамический массив,
> который является свойством объекта Record?
в типизированный файл - никак