Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

Вы можете поймать больше одного зайца в случае объявления переменной записи, но если сделаете это правильно.

Type

 TDataTag  = Array [1..3] of Char;

 TDataTags = Array [0..NumOfTags-1] of TDataTag;

 TDataRec = packed Record

  tagfield: TDataTag;

  case integer of

  0: ( поля для тэга TFH );

  1: ( поля для тэга TBH );

  2: …

  …

 end;

 TMultiRec = packed Record

  Case Boolean of

  false: (строка: Array [0..1024] of Char);

  { должно установать строку максимально возможной длины }

  true : ( data: TDataRec );

 End;

Const DataTags: TDataTags = ('TFH', 'TBH', …);

var rec: TMultirec;

ReadLn(datafile, rec.line);

Case IndexFromDataTag(rec.data.tagfield) Of

0: …

1: …

IndexFromDataTag должен искать передаваемый тэг поля в массиве DataTags. Определите все поля в TDataRec как Array [1..someUpperBound] of Char.

– Peter Below

<p>Передача массива записей символов в Memo</p>

Delphi 1

Тема: Передача массива записей символов в Memo.

Обработка больших строк в 16-битной версии Delphi задача далеко непростая. Особенно когда строки являются частью структуры записи и вы хотите передать их в TMemo. В данном совете показано как создать структуру записи размером 1000 символов, прочесть в нее содержимое Memo и затем записать ее обратно в Memo. Основной метод, который мы здесь используем — метод Memo GetTextBuf. Используемая структура записи представляет собой простую строку и массив из 1000 символов, но структура могла бы быть сложнее.

unit URcrdIO;

interface

uses

 SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls,dbtables;

type

 TForm1 = class(TForm)

  Button1: TButton;

  Memo1: TMemo;

  Button2: TButton;

  procedure Button1Click(Sender: TObject);

  procedure Button2Click(Sender: TObject);

  private { Private declarations }

  public { Public declarations }

 end;

type

 TMyRec = record

  MyArray: array [1..1000] of char;

  mystr: string;

 end;

var

 Form1: TForm1;

 MyRec : TMyRec;

 mylist : TStringlist;

 PMyChar : PChar;

 myfile : file;

 mb : TStream;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

 assignfile(myfile, 'c:\testblob.txt');

 rewrite(myfile,1);

 fillchar(MyRec.MyArray,sizeof(MyRec.MyArray),#0);

 pmychar:=@MyRec.MyArray;

 StrPCopy(pmychar,memo1.text);

 Blockwrite(MyFile,MyRec,SizeOf(MyRec));

 closefile(MyFile);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 assignfile(myfile, 'c:\testblob.txt');

 reset(myfile,1);

 fillchar(MyRec.MyArray, sizeof(MyRec.MyArray),#0);

 Blockread(MyFile, MyRec, SizeOf(MyRec));

 pmychar:=@MyRec.MyArray;

 Memo1.SetTextBuf(pmychar);

end;

end.

<p>Освобождение записей</p>

Delphi 1

Для начала необходимо привести объект к нужному типу, например, так:

var

  i: integer;

begin

 …

for

 i := 0 to MyList.Count - 1 do dispose(PMyRecord(MyList[i]));

 MyList.Free;

end;

или

begin

 for i := 0 to MyList.Count - 1 do dispose(PMyRecord(MyList.items[i]));

 MyList.Free;

end;

Items — свойство по умолчанию, поэтому вам нет необходимости определять это, хотя обратное не помешает.

Теперь можно заняться созданием работоспособной и полезной функцией. В форме:

var p : ^mystruct;

begin

 new(p);

 …

 dispose(p);

end;

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT