Главная страница
    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.47 MB
Время: 0.007 c
9-59524
MYSTERYO
2002-12-14 10:56
2003.05.19
Где спрайты качнуть из диабло или аллодов подскажите


3-59585
Devourer
2003-04-25 14:38
2003.05.19
PickList +Post


3-59620
VoronBor
2003-04-28 02:56
2003.05.19
Paradox таблицы в SQl используя ADO


11-59642
MyVeryShortLogin
2002-08-13 15:13
2003.05.19
procedure WMLButtonDown(var Msg : TMessage); message WM_LBUTTONDO


8-59815
Demetrius
2003-02-04 19:28
2003.05.19
G32





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский