Передача массива записей символов в Memo
Материал из DRKB
Передача массива записей символов в 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.
Source: http://delphiworld.narod.ru
ID: 00784