Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

свой тип файлов [D7, WinXP]


Green_Templar ©   (2005-06-08 01:58:00) 

можно делать file of g, где g=какой-то там рекорд. А у меня есть 3 рекорда разного типа, как их записать в один файл?


Anatoly Podgoretsky   (2005-06-09 08:52:00) [1]

Antonn ©   (08.06.05 13:56) [3]
Ну у многих ругается за ошибки. Совет чтобы не ругалось пиши программы без ошибок.


Просто Джо   (2005-06-09 04:24:00) [2]

А, наверное, 998... Или переполнение стека, если переменная в процедуре объявлялась.


Просто Джо   (2005-06-09 04:16:00) [3]


>  [3] Antonn ©   (08.06.05 13:56)
> Anatoly Podgoretsky ©   (08.06.05 9:08) [2]
> а у меня ругалось, если "TThreeRecords" была больше мегабайта...

Чего у тебя ругалось?


Antonn   (2005-06-08 13:56:00) [4]

Anatoly Podgoretsky ©   (08.06.05 9:08) [2]
а у меня ругалось, если "TThreeRecords" была больше мегабайта...


Anatoly Podgoretsky   (2005-06-08 09:08:00) [5]

TThreeRecords = record
 R1: TRec1;
 R2: TRec2;
 R3: TRec3;
end;

file of TThreeRecords;


Просто Джо   (2005-06-08 02:23:00) [6]

Да по-разному. Например так:

var
 Fv: file;
 Rec1: TMyRec1;
 Rec2: TMyRec2;
..
   BlockWrite(Fv,Rec1,SizeOf(Rec1));
   BlockWrite(Fv,Rec2,SizeOf(Rec2));

Или так:

var
 Rec1: TMyRec1;
 Rec2: TMyRec2;
 FS: TFileStream;
begin
 Rec1.A := $FD;
 Rec1.B := $FF;
 FS := TFileStream.Create('i:\test.dat',fmCreate);
 try
   FS.Write(Rec1,SizeOf(Rec1));
   FS.Write(Rec2,SizeOf(Rec2));
 finally
   FS.Free;
 end;
end.

А, возможно, лучше "обернуть" рекорды в классы, каждый со своим методом записи/чтения в/из файла/стрима.


Наверх

Титульная страница Поиск, карта сайта Написать письмо