Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Как мне записать массив в файл   Найти похожие ветки 

 
Евгений   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
1-59726
Patrick
2003-05-05 13:31
2003.05.19
Чтение кодов с клавиатуры


14-59910
Шоломицкий
2003-04-29 22:17
2003.05.19
В инете делать нечего....


3-59561
Kardash
2003-04-26 09:52
2003.05.19
Как связать данные с датой, а также как вести динамический список


9-59521
Карлсон
2002-12-12 23:52
2003.05.19
FPS


3-59596
sts
2003-04-25 12:37
2003.05.19
ODAC, SAVEPOINTs