Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Внизчтение из файла Найти похожие ветки
← →
ИльяС (2007-06-22 12:17) [0]При копировании статического массива из файла проходит все как надо.
Знаю что динамический массив это указатель. Как мне скопировать из файла динамический массив.
← →
Плохиш © (2007-06-22 12:19) [1]1. Распределить память и так же как и статический массив
2. В цикле.
← →
Сергей М. © (2007-06-22 12:22) [2]
> мне скопировать из файла динамический массив
Смотря как он туда попал
← →
Ильяс (2007-06-22 12:27) [3]1 вариант проходит
File.Read(StatArray,Length(StatArray));
2. вариант не прохрдит
SetLength(DinamicArray,LengthDinamicArray)
File.Read(DinamicArray,Length(DinamicArray));
← →
Плохиш © (2007-06-22 12:30) [4]
> File.Read(DinamicArray[0],Length(DinamicArray));
← →
Инс (2007-06-22 12:31) [5]При сохранении в файл - сначала записывайте размер. При чтении - сначала читайте размер, потом устанавливайте массиву полученный размер с пом. SetLength, а потом - читайте.
Запись:var
S: TFileStream;
arr: packed array of <тип элемента>;
begin
S:=TFileStream.Create(FileName,fmCreate);
try
S.WriteBuffer(Length(arr),SizeOf(Integer));
S.WriteBuffer(Pointer(arr)^,Length(arr)*SizeOf(<тип элемента>));
finally
S.Free;
end;
end;
Чиение:var
S: TFileStream;
arr: packed array of <тип элемента>;
Size: Integer;
begin
S:=TFileStream.Create(FileName,fmOpenRead);
try
S.ReadBuffer(Size,SizeOf(Integer));
SetLength(arr,Size);
S.ReadBuffer(Pointer(arr)^,Size*SizeOf(<тип элемента>));
finally
S.Free;
end;
end;
← →
MBo © (2007-06-22 12:32) [6]File.Read(DinamicArray[0], Length(DinamicArray)*SizeOf(DinamicArray[0]))
← →
Gydvin © (2007-06-22 13:01) [7]
> File.Read(DinamicArray[0],
Во кстати тоже так читаю. Вопрос. Возможны ли в этом случае, какие либо неожиданости?
← →
Anatoly Podgoretsky © (2007-06-22 13:21) [8]> Инс (22.06.2007 12:31:05) [5]
Не нужно, а главное неправильно, потом будет кричать памяти не хватает
← →
Anatoly Podgoretsky © (2007-06-22 13:23) [9]> Anatoly Podgoretsky (22.06.2007 13:21:08) [8]
Насчет неправильно погорячился
← →
ИльяС © (2007-06-22 14:32) [10]Работает вариант:
File.Read(Pointer(DinamicArray)^,Length(DinamicArray));
← →
Инс (2007-06-22 14:35) [11]
> Работает вариант:
Без умножения на SizeOf(<тип элемента>)? packed array of Byte (Char) что ли?
← →
ИльяС © (2007-06-22 14:54) [12]
> Без умножения на SizeOf(<тип элемента>)? packed array of
> Byte (Char) что ли?
Да Byte
Спасибо за помощь
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c