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

Previous  Top  Next

    
 

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

 

Code:

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.

 

 

©Drkb::00784

http://delphiworld.narod.ru/

DelphiWorld 6.0