Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
ВнизКак мне записать массив в файл Найти похожие ветки
← →
Евгений (2003-05-06 23:06) [0]Как мне записать массив в файл с помощью TFileStream?
Thank you.
← →
MBo (2003-05-07 05:09) [1]с помощью FileStream.Write
В чем проблема?
← →
DDDeN (2003-05-07 06:00) [2]var
F: Text;
A: Array[1..5] of Integer;
I: Integer;
begin
Randomize;
for I := 1 to 5 do
A[I] := Random(9);
Assign(F, "My.txt");
Rewrite(F);
for I := 1 to 5 do
Writeln(F, A[I]:5);
Close(F);
Я привел чисто Паскалевский метод. В Дельфях будет немного иначе. И двумерный массив пишется вложенными в друг друга двумя циклами. Удачи!
← →
Palladin (2003-05-07 08:39) [3]
> DDDeN © (07.05.03 06:00)
ты хоть вопрос то читал?
← →
race1 (2003-05-07 08:54) [4]
type
TMyRec = packed record // твоя запись
str: String[100]; // строчка обязательно определённого размера!
int: Integer;
dbl: Double;
end ;
var
f: TFileStream;
arr: Array[0..10] of TMyRec; // массив твоих типов переменных
ari: Array[0..10] of Integer; // массив целых чисел
i,
iPos: Integer; // это текущая позиция в потоке
begin
f := TFileStream.Create ( "StreamFile", fmCreate ) ; // создаём файловый поток
iPos := 0 ;
f.Seek ( iPos, soFromBeginning ) ; // устанавливаем текушую позицию в ноль ( iPos )
for i := 0 to Length ( arr ) - 1 do
begin
f.Write ( arr[i], SizeOf ( TMyRec ) ) ; // пишем в поток эл-ты массива
Inc ( iPos, SizeOf ( TMyRec ) ) ; // увеличиваем текущую позицию в файле, что бы не перезаписывать данные, на размер записи TMyRec
f.Seek ( iPos, soFromBeginning ) ; // устанавливаем положение в файле
end ;
for i := 0 to Length ( ari ) - 1 do // аналогично
begin
f.Write ( ari[i], SizeOf ( Integer ) ) ;
Inc ( iPos, SizeOf ( ari[i] ) ) ;
f.Seek ( iPos, soFromBeginning ) ;
end ;
f.Free ; // освобождаем файловый поток
end;
← →
Palladin (2003-05-07 09:20) [5]
> race1 © (07.05.03 08:54)
все это сводится к одной строчке
f.Write(Arr,SizeOf(Arr));
или в случае дин массива
f.Write(Arr[Low(Arr)],SizeOf(TMyRec)*Length(Arr));
мастер блин...
← →
Verg (2003-05-07 09:22) [6]если массив статический:
stream.write(arr, sizeof(arr));
если массив динамический:
stream.write(arr[0], length(arr)*sizeof(arr[0]));
← →
Verg (2003-05-07 09:22) [7]Ну, блин.. :))
← →
race1 (2003-05-07 09:27) [8]>Palladin © (07.05.03 09:20)
зато всё подробно :)
← →
kull (2003-05-07 11:00) [9]
> Palladin © (07.05.03 09:20)
А если строчка типа string? хе-хе :)
← →
Palladin (2003-05-07 11:11) [10]
> kull © (07.05.03 11:00)
Читая внимательней мой пост, может быть ты заметишь что я обращался к Race1 по поводу предоставленого им примера, где явно указано в коментариях все что касается String.
хехе...
← →
kull (2003-05-07 11:15) [11]
> Palladin © (07.05.03 11:11)
Выкрутился...
← →
Palladin (2003-05-07 11:18) [12]что ж ты злобный то такой...
вместо поддевок
взял бы и написал бы как сохранять record с перменными string
← →
Verg (2003-05-07 11:28) [13]
> взял бы и написал бы как сохранять record с перменными string
А лучше с TStrings, Tlist, TForm-s и проч. :)
← →
DDDeN (2003-05-07 14:09) [14]Вопрос читал и предложил Паскалевский метод ;-)
← →
Palladin (2003-05-07 14:23) [15]:)
к сожалению все вышеуказаное тоже паскалевское
а вот старопаскалевский метод работы с файлами и записью массивов
var
F: File;
A: Array[1..5] of Integer;
I: Integer;
begin
Randomize;
for I := 1 to 5 do A[I] := Random(9);
Assign(F, "My.dat");Rewrite(F,1);
BlockWrite(F, A, SizeOf(A));Close(F);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c