Тема: Передача массива записей символов в 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. |
[001091]