Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 087

•  TDictionary Custom Sort  6 177

•  Fast Watermark Sources  5 976

•  3D Designer  8 856

•  Sik Screen Capture  6 315

•  Patch Maker  6 725

•  Айболит (remote control)  6 722

•  ListBox Drag & Drop  5 579

•  Доска для игры Реверси  95 964

•  Графические эффекты  6 939

•  Рисование по маске  6 191

•  Перетаскивание изображений  5 109

•  Canvas Drawing  5 476

•  Рисование Луны  5 189

•  Поворот изображения  4 734

•  Рисование стержней  3 344

•  Paint on Shape  2 581

•  Генератор кроссвордов  3 479

•  Головоломка Paletto  2 778

•  Теорема Монжа об окружностях  3 580

•  Пазл Numbrix  2 351

•  Заборы и коммивояжеры  3 033

•  Игра HIP  1 989

•  Игра Go (Го)  1 911

•  Симулятор лифта  2 265

•  Программа укладки плитки  1 975

•  Генератор лабиринта  2 427

•  Проверка числового ввода  2 106

•  HEX View  2 432

•  Физический маятник  2 062

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Сохранение и чтение из потока данных объекта



Для чтения и записи на диск большого количества записей данных объекта я использовал TFileStream и TMemoryStream. Ниже я привел пример, сохраняющий на диске c помощью потока содержание контейнера DataArray, насчитывающего несколько тысяч записей объектов:


DataStream := TFileStream.Create('vccmem.dat', fmCreate);
MakeDate := FormatDateTime('mmmm d, yyyy',date);
DataStream.Write(MakeDate, SizeOf(MakeDate));
RCount := DataArray.Size;
DataStream.Write(RCount,SizeOf(RCount));

for q := 1 to DataArray.Size do
begin
  Application.ProcessMessages;
  ARecord := DataArray[q] as TNameRecord;
  DataStream.Write(ARecord.id, SizeOf(ARecord.id));
  DataStream.Write(ARecord.first_name, SizeOf(ARecord.first_name));
  DataStream.Write(ARecord.last_name, SizeOf(ARecord.last_name));
  DataStream.Write(ARecord.title, SizeOf(ARecord.title));
  DataStream.Write(ARecord.address, SizeOf(ARecord.address));
  DataStream.Write(ARecord.city, SizeOf(ARecord.city));
  DataStream.Write(ARecord.state, SizeOf(ARecord.state));
  DataStream.Write(ARecord.zip, SizeOf(ARecord.zip));
  DataStream.Write(ARecord.phone, SizeOf(ARecord.phone));
  DataStream.Write(ARecord.fax, SizeOf(ARecord.fax));
  DataStream.Write(ARecord.e_mail, SizeOf(ARecord.e_mail));
end;
DataStream.Destroy;

А вот код, но на этот раз загружающий данные в память при запуске приложения и создающие контейнер данных с именем NameArray:


DataStream := TMemoryStream.Create;
DataStream.LoadFromFile('vccmem.dat');
DataStream.Read(MakeDate, SizeOf(MakeDate));
DataStream.Read(RCount, SizeOf(RCount));

for q := 1 to RCount do
begin
  NameRecord := TNameRecord.Create;
  DataStream.Read(NameRecord.id, SizeOf(NameRecord.id));
  DataStream.Read(NameRecord.first_name,
    SizeOf(NameRecord.first_name));
  DataStream.Read(NameRecord.last_name,
    SizeOf(NameRecord.last_name));
  DataStream.Read(NameRecord.title, SizeOf(NameRecord.title));
  DataStream.Read(NameRecord.address, SizeOf(NameRecord.address));
  DataStream.Read(NameRecord.city, SizeOf(NameRecord.city));
  DataStream.Read(NameRecord.state, SizeOf(NameRecord.state));
  DataStream.Read(NameRecord.zip, SizeOf(NameRecord.zip));
  DataStream.Read(NameRecord.phone, SizeOf(NameRecord.phone));
  DataStream.Read(NameRecord.fax, SizeOf(NameRecord.fax));
  DataStream.Read(NameRecord.e_mail, SizeOf(NameRecord.e_mail));
  NameArray.Insert(NameRecord);
end;





Похожие по теме исходники

Чтение PSD файлов

Экспорт баз данных в Excel

База данных "Книжный магазин"

База данных Видеофильмов

 

База данных "Школа"

База данных без BDE

База данных студентов

Фильтрование данных

 

Pevrica (сжатие данных)




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте