Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизСохранение масива в файл и загрузка из файла Найти похожие ветки
← →
Spartak (2003-06-16 07:46) [0]Подскажите пожайлуста как реализовать запись и чтение масива из файла
← →
Forester (2003-06-16 08:11) [1]Пример функции, производящей запись в бинарный файл
procedure SaveToFile(FileName:String; const buffer; Size: Integer);
var
F:File;
begin
if Size<=0 then exit;
AssignFile(F, FileName);
Rewrite(F, 1);
BlockWrite(F, buffer, Size);
CloseFile(F);
end;
Пример ее вызова
procedure TForm1.Button1Click(Sender: TObject);
var
Arr:array[1..5] of word;
i:integer;
begin
for i:=low(Arr) to High(Arr) do
Arr[i]:=i;
SaveToFile("SaveFile.bin", Arr[1], Sizeof(arr)*Sizeof(word));
end;
Чтение производится практически аналогично, с использованием функций Reset и BlockRead и проверкой размера файла.
Это всего лишь один способ. Можно создавать наследника TStream, писать в текстовый файл и т.д. Все определяется задачей.
← →
Song (2003-06-16 08:52) [2]Да просто Write
← →
Spartak (2003-06-16 09:03) [3]> Forester
Спасибо за пример
Ты бы не мог написать код чтения записанного ранее файла ?
я просто не работал ещё в этом направлении и по этому немного не ссображаю :)
← →
Anatoly Podgoretsky (2003-06-16 09:04) [4]А массив то какой?
← →
Spartak (2003-06-16 09:11) [5]>Anatoly Podgoretsky
Buffer : array[0..64] of Char;
← →
Skier (2003-06-16 09:13) [6]WriteBuffer(...)
ReadBuffer(...)
← →
Spartak (2003-06-16 09:25) [7]код :
procedure loadToFile(FileName:String; const buffer; Size: Integer);
var
F:File;
begin
if Size<=0 then exit;
AssignFile(F, FileName);
Reset(F, 1);
BlockRead(F, buffer, Size);
CloseFile(F);
end;
Выдаёт ошибку :( я не понял как считывать !
А запись в файл идёт нормально
← →
Skier (2003-06-16 09:29) [8]-Spartak © (16.06.03 09:25)
- файл нетипизированный
- Size чему у тебя равен ?
- как вызываешь loadToFile ?
← →
Anatoly Podgoretsky (2003-06-16 09:31) [9]Ну тут по уму лучше создать тип и использовать типизированный файл.
← →
Alex_*** (2003-06-16 09:35) [10]TMemoryStream:
->Write(Buffer,sizeof(Buffer))...
->SaveToFile("tt.dat")
← →
Spartak (2003-06-16 09:37) [11]> Skier
размер size 64
остальное не знаю :( не умею просто ( пока что не сталкивался )
Пример как подсказал Forester работает , но не могу вызвать обратную функцию чтения масива из файла :(
← →
Spartak (2003-06-16 09:59) [12]что такое типизированный файл ? Как с ним работать ?
← →
Alex_*** (2003-06-16 10:02) [13]Что ты заморачиваешься на типизированные файлы? Сделай объект типа TMemoryStream и гоняй массивы туда/обратно сколько хочешь...
← →
Spartak (2003-06-16 10:11) [14]Да блин ! вы можете подсказать что исправить вот здеся :
procedure SaveToFile(FileName:String; const buffer; Size: Integer);
var
F:File;
begin
if Size<=0 then exit;
AssignFile(F, FileName);
Rewrite(F, 1);
BlockWrite(F, buffer, Size);
CloseFile(F);
end;
чтобы грузить масив из файла ?
← →
Anatoly Podgoretsky (2003-06-16 10:16) [15]А чего здесь не нравится
← →
Alex_*** (2003-06-16 10:19) [16]Если тебе надо читать, так и читай.... Reset() вместо Rewrite()
BlockRead() вместо BlockWrite()
← →
Spartak (2003-06-16 10:36) [17]это то я понял.
пишу BlockRead(F, buffer, Size);
выдаёт ошибку : constant object cannot passed as var parameter
В чём проблема ?
← →
Alex_*** (2003-06-16 10:44) [18]Ну и не передавай как const )) Определи параметр как ссылку: var Buffer
← →
Anatoly Podgoretsky (2003-06-16 10:45) [19]Так может у тебя массива нет?
← →
Spartak (2003-06-16 10:50) [20]> Alex_***
и так глобально стоит
var
Buffer : array[0..] of Char;
сохраняеться главно нормально , а вот не хочет считывать :(
← →
Spartak (2003-06-16 10:51) [21]вернее не Buffer : array[0..] of Char;
а Buffer : array[0..255] of Char;
← →
Anatoly Podgoretsky (2003-06-16 10:56) [22]А причем тут глобальный массив, если у тебя он не используется, а есть константный массив const buffer
Мой совет или переходи на типизированные файлы или используй потоковый доступ TFileStream
← →
Alex_*** (2003-06-16 10:56) [23]procedure ReadFromFile(FileName:String; var buffer; Size: Integer);
← →
Spartak (2003-06-16 11:07) [24]Всё разобрался ! всем большое спасибо ! :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.026 c