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

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

Сохранение динамического массива в файл [D7]


Страницы:   1 2 3 4

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?

в типизированный файл - никак


Страницы:   1 2 3 4

Наверх

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