首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

为什么会出现此类有关问题? 帮帮忙

2012-02-16 
为什么会出现此类问题? 各位高手帮帮忙.function SendMsg(servername:PWideCharToStr,FromStr,Msg:string

为什么会出现此类问题? 各位高手帮帮忙.
function SendMsg(servername:PWideChar;ToStr,FromStr,Msg:string):integer;
var
  ToName,FromName:array [0..64] of WideChar;
  WMsgText:array [0..1000] of WideChar;
  MsgLen,i:integer;
begin
  for i:=0 to 64 do begin ToName[i]:=#0;FromName[i]:=#0 end;
  ToUnicode(ToStr,ToName);
  ToUnicode(FromStr,FromName);
  for i:=0 to 1000 do WMsgText[i]:=#0;
  ToUnicode(Msg,WMsgText);
  Result:=NetMessageBufferSend(servername,ToName,FromName,@WMsgText,MsgLen);
end;

对于上面的函数,tounicode怎么转换过去,找了很久的原因,都没有找到?
出现incompatible types : 'cardinal' and 'string';的错误,那位高手帮帮忙?谢了.

[解决办法]
ToUnicode
这个函数在哪儿定义的?
如果是自己定义的函数,在引用里加上这个单元。

如果是系统函数,
在Windows.pas中的定义是:
function ToUnicode(wVirtKey, wScanCode: UINT; const KeyState: TKeyboardState;
var pwszBuff; cchBuff: Integer; wFlags: UINT): Integer; stdcall;

[解决办法]
楼主是不是照这样写的
function ToUnicode(str:string;dest:PWideChar):integer;
function SendMsg(Toh,From,Msg:string):integer;
function NetMessageBufferSend(servername:PWideChar;
MsgName:PWideChar;
FromName:PWideChar;
Buf: PWideChar;
var BufLen:integer):integer;cdecl;

implementation

function ToUnicode(str:string;dest:PWideChar):integer;
var
len:integer;
begin
StringToWideChar(str,dest,len);
Result:=len;
end;

function NetMessageBufferSend; external 'netapi32.dll' name 'NetMessageBufferSend';

function SendMsg(Toh,From,Msg:string):integer;
var
ToName :array [0..64] of WideChar;
FromName :array [0..64] of WideChar;
WMsgText:array [0..1000] of WideChar;
MsgLen, i:integer;
begin
for i := 0 to 64 do ToName[i] := #0;
ToUnicode(Toh,ToName);
for i := 0 to 64 do FromName[i] := #0;
ToUnicode(From,FromName);
for i := 0 to 1000 do WMsgText[i] := #0;
ToUnicode(Msg,WMsgText);
Result:=NetMessageBufferSend(nil,ToName,FromName,@WMsgText,MsgLen);
end;

end.

热点排行