----------------------------------------------------------------------
type RTestInfo = record Age:Integer; end; PtestInfo = ^ RtestInfo; var Test1,Test2:PtestInfo; Begin New(Test1); New(Test2); Test1^.Age:=12; Test2:=Test1; Application.MessageBox(Pchar(IntToStr(Test2^.Age)),’测试’,MB_OK); Test1^.Age:=13; Application.MessageBox(Pchar(IntToStr(Test2^.Age)),’测试’,MB_OK); DisPose(Test1); DisPose(Test2); End;
type RtestInfo = record Age:Integer; End; Var Test: RtestInfo; Data:array[0..1024] of Char; Begin Test.Age:=13; Fillchar(Data,SizeOf(Data),#0); StrMove(Data,@ Test,sizeof(Test)); //数据发送 End;
在上面的例子中首先我们将我们定义数组Data清空,然后使用函数StrMove将结构Test的内容复制到Data中去。这个时候就可以将数据发送出去。当对方接受到数据以后,可以用以下的代码进行还原。
type RtestInfo = record Age:Integer; End; Var Test: RtestInfo; Begin StrMove(@Test,Data,sizeof(Test)); //处理数据 End;
这个时候就可以对发送过来的数据进行相应的处理了。
SendDataFun: procedure(Casetype: Byte; UserSocket: RUserSocket; Data: array of char; DataLen: Integer); function ModuleSendData(FunPList: TList): Boolean; stdcall; export; begin SendDataFun := FunPList.Items[0]; end; 在EXE中的代码是: Linstance:=LoadLibrary(Pchar(Temp)); if Linstance>0 then begin //将发送数据的指针传入DLL插件中 @GiveModuleFun:=GetProcAddress(Linstance,'ModuleSendData'); if @GiveModuleFun<>NIl then begin m_FunList:=TList.Create; //发送数据 t_Pointer:=@DllSendData; m_FunList.Add(t_Pointer); GiveModuleFun(m_FunList); End; End;