Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-59813
Saracin
2003-02-04 06:17
2003.05.19
Как получить HDC у TCanvas?


1-59699
cyril
2003-05-07 20:56
2003.05.19
Как


7-59960
bgormakov
2003-03-21 21:40
2003.05.19
Пароли.


8-59806
swamp
2003-02-06 20:14
2003.05.19
Инверсия


3-59617
dtm
2003-04-28 19:11
2003.05.19
Суммирование количества записей в QReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский