訊息傳送字串

2022-06-08 11:27:09 字數 1327 閱讀 5470

其實不論什麼方法,歸根揭底都是通過傳遞物件的指標來達到效果的。

方法一:

procedure sendstring(strmsg: string);

vardata: tagcopydatastruct;

pbuf: pchar;

begin

getmem(pbuf, length(strmsg) + 1);

tryzeromemory(pbuf, length(strmsg) + 1);

strpcopy(pbuf, strmsg);

data.cbdata:= length(strmsg);

data.dwdata:= length(strmsg);

data.lpdata:= pbuf;

sendmessage(htargetwin, wm_copydata, integer(self.handle), integer(@data));

finally

freemem(pbuf);

end;

end;

procedure wmcopydata(var msg: tmessage); message wm_copydata;

procedure tform1.wmcopydata(var msg: tmessage);

vardata  : ^tagcopydatastruct;

strmsg: string;

begin

data:= pointer(msg.lparam);

strmsg:= strpas(data.lpdata);

showmessage(strmsg);

end;

方法二:

tmyrecord=record  s:string;  end;   

tt:tmyrecord;

var  tt:tmyrecord;  begin  tt.s:='s2343243';   postmessage(handle,wm_my,integer(tt),5); end;

傳送訊息,由於引數只能是乙個integer,你這樣發只能發4個位元組,所以要改成發指標,比如:

var tt:tmyrecord; begin  tt.s:='s2343243';   postmessage(handle,wm_my,integer(@tt),5); end;

接收的時候當然也不能用原來的方法:my:=tmyrecord(msg.wparam);這樣取回來了,也要把tmyrecord宣告成指標:

type  pmyrecord=^tmyrecord; var  my:pmyrecord; my:=pmyrecord(msg.wparam);

Delphi窗體間傳送訊息或字串

自定義過程 函式方法 傳送字串到指字句柄的視窗中 接收窗體需用傳送時的訊息常量wm copydata procedure sendmessagedata ahandle thandle astr string varsdata tcopydatastruct begin sdata.cbdata l...

webservice傳送字串

假設只是傳送乙個字串client,這是很easy,只需要輸入xfire包,編寫介面,編寫的實現方法。變化。假設你要傳輸的陣列或自定義類。到用於介面準備的需要agexis檔案。更複雜。嘗試傳輸這些假設沒有成功。在傳送成功的字串,能寫自己的xml檔案。讓client接受並解析。介面類示範例如以下 pac...

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...