帮我看看我怎么错了!???(50分)

  • 主题发起人 主题发起人 Carem
  • 开始时间 开始时间
C

Carem

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗体的use中调用了一个自己写的api.pas的文件,编译的时候没问题,但是运行的时候老是出错,而且总是一个在同一个地址上!请问怎么回事?<br><br>我自己写的api.pas &nbsp;和 &nbsp;unit3<br><br>unit api;<br>interface<br>uses SysUtils, Classes;<br><br>function ToUnicode(str:string;dest:PWideChar):integer;<br>function SendMsg(Toh,From,Msg:string):integer;<br>function NetMessageBufferSend(servername:PWideChar;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MsgName:PWideChar;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FromName:PWideChar;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Buf: PWideChar;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var BufLen:integer):integer;cdecl;<br>implementation<br>function ToUnicode(str:string;dest:PWideChar):integer;<br>var<br>&nbsp; len:integer;<br>begin<br>&nbsp; StringToWideChar(str,dest,len);<br>&nbsp; Result:=len;<br>end;<br><br><br>function NetMessageBufferSend; external 'netapi32.dll' name 'NetMessageBufferSend';<br><br>function SendMsg(Toh,From,Msg:string):integer;<br>var<br>&nbsp; ToName :array [0..64] of WideChar;<br>&nbsp; WMsgText:array [0..1000] of WideChar;<br>&nbsp; MsgLen, i:integer;<br>begin<br>&nbsp; for i := 0 to 64 do ToName := #0;<br>&nbsp; ToUnicode(Toh,ToName);<br>&nbsp; for i := 0 to 1000 do WMsgText := #0;<br>&nbsp; ToUnicode(Msg,WMsgText);<br>&nbsp; Result:=NetMessageBufferSend(nil,ToName,nil,@WMsgText,MsgLen);<br>end;<br><br>end.<br><br>-----------------------------------------------------------------------<br><br><br>unit Unit3;<br><br>interface<br><br>uses &nbsp; api,<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; ComCtrls, SUIStatusBar, StdCtrls, SUIMemo, SUIButton, SUIComboBox,<br>&nbsp; ExtCtrls, SUIForm;<br><br>type<br>&nbsp; TForm3 = class(TForm)<br>&nbsp; &nbsp; suiForm1: TsuiForm;<br>&nbsp; &nbsp; suiComboBox1: TsuiComboBox;<br>&nbsp; &nbsp; suiComboBox2: TsuiComboBox;<br>&nbsp; &nbsp; suiButton1: TsuiButton;<br>&nbsp; &nbsp; suiButton2: TsuiButton;<br>&nbsp; &nbsp; suiMemo1: TsuiMemo;<br>&nbsp; &nbsp; suiStatusBar1: TsuiStatusBar;<br>&nbsp; &nbsp; procedure FormCreate(Sender: TObject);<br>&nbsp; &nbsp; procedure suiButton1Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp; username:string;<br>&nbsp; &nbsp; &nbsp; messageheader:tstringlist;<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form3: TForm3;<br><br>implementation<br><br>uses Unit1;<br><br>{$R *.DFM}<br><br>procedure TForm3.FormCreate(Sender: TObject);<br>var<br>struser:pchar;<br>strsize:dword;<br>begin<br>suicombobox1.items:=form1.suiComboBox1.items;<br>suimemo1.lines.Clear ;<br>strsize:=100;<br>getusername(struser,strsize);<br>username:=struser;<br>messageheader:=tstringlist.create;<br>messageheader.Add ('');<br>messageheader.Add (username+'对你说:');<br>messageheader.Add ('');<br>end;<br><br><br>procedure TForm3.suiButton1Click(Sender: TObject);<br>var<br>res:integer;<br>begin<br>if suicombobox2.enabled = true then<br>&nbsp; &nbsp; &nbsp; res := SendMsg(suicombobox1.text,'',messageheader.text+suicombobox2.text)<br>&nbsp; &nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res := SendMsg(suicombobox1.text,'',messageheader.text+suimemo1.text);<br>end;<br><br><br>end.<br>
 
什么地方错了?
 
编译的时候通过!只是运行的时候说,内存地址错误而已!具体地址忘记了!
 
suicombobox1.items:=form1.suiComboBox1.items;<br><br><br>Who tell you you can do this ???
 
谢谢temp2000!
 
function ToUnicode(str:string;[red]var [/red]dest:PWideChar):integer;<br>试试
 
suicombobox1.items.Assign(form1.suiComboBox1.items);<br>
 
后退
顶部