COM +: Receivetransfer TSTRINGS

xiaoxiao2021-03-06  63

Unit uform;

Interface

Uses Windows, Messages, Sysutils, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls;

type TForm1 = class (TForm) Button1: TButton; Button2: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button1Click (Sender: TObject); procedure Button2Click (Sender: TObject); private {Private declarations} public {Public declarations} hStrList : Tstringlist; v: olevariant;

Var Form1: TFORM1;

IMPLEMENTATION

{$ R * .dfm}

Procedure VariantTostReam (Stream: TSTREAM); VAR P: ​​POINTER; Begin P: = VararrayLock (data); try stream.write (p ^, VararrayHighBound (data, 1) 1); // Assuming Low Bound = 0 Finally Vararrayunlock (data); end;

Function streamtovariant (Stream: TSTREAM): Olevariant; var P: Pointer; Begin Result: = VararrayCreate ([0, Stream.size - 1], varbyte); p: = varosition: = 0; // Start from Beginning Of Stream Stream.read (p ^, stream.size); Finally Vararrayunlock (Result); end;

function StringlistToVariant (aStrlist: TStrings): OleVariant; var hStream: TStream; begin hStream: = TMemoryStream.Create; try aStrList.SaveToStream (hStream); hStream.Seek (0, soFromBeginning); Result: = StreamToVariant (hStream); finally hStream .Free;

procedure VariantToStringlist (const Data: OleVariant; aStrlist: TStrings); var hStream: TStream; begin hStream: = TMemoryStream.Create; try VariantToStream (Data, hStream); hStream.Seek (0, soFromBeginning); aStrList.LoadFromStream (hStream); Finally hstream.free; end;

Procedure tform1.button1click (sender: TOBJECT); begin hrstrlist: = tstringlist.create; hrstr means.assign (memo1.Lines); v: = stringlisttovariant (hstrlist);

HSTRLIST.DESTROY; END;

Procedure TFORM1.BUTTON2CLICK (Sender: TOBJECT); Begin VariantToStringList (v, memo2.line);

End.

转载请注明原文地址:https://www.9cbs.com/read-85787.html

New Post(0)