Delphi IdIRC中的PrivateMessages出错
您好,我对以下代码有问题:Delphi IdIRC中的PrivateMessages出错,delphi,indy,Delphi,Indy,您好,我对以下代码有问题: program test; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, idIRC, idContext, idGlobal; // procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, // AHost, ATarget, AMessage: string); // procedure TForm
program test;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, idIRC, idContext, idGlobal;
// procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname,
// AHost, ATarget, AMessage: string);
// procedure TForm1.IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
// const AMessage: string);
procedure IrcPrivateMessage(ASelf: Pointer; const ANickname, AHost, ATarget,
AMessage: string);
begin
Writeln('[+] Message ' + ANickname + ' > ' + AMessage);
end;
procedure IrcRaw(ASelf: Pointer; ASender: TIdContext; AIn: Boolean;
const AMessage: String);
begin
Writeln(iif(AIn, '[Recv] ', '[Sent] ') + AMessage);
end;
var
irc: TIdIRC;
m1: TMethod;
m2: TMethod;
begin
try
irc := TIdIRC.Create(nil);
try
irc.Host := 'localhost';
irc.Port := 6667;
irc.Nickname := 'tester';
irc.Username := 'tester';
m1.Code := @IrcRaw;
m1.Data := irc;
irc.OnRaw := TIdIRCRawEvent(m1);
m2.Code := @IrcPrivateMessage;
m2.Data := irc;
irc.OnPrivateMessage := TIdIRCPrivMessageEvent(m2);
try
irc.Connect;
except
Writeln('Nay');
Exit;
end;
Writeln('Yeah');
irc.Join('#locos');
while ('1' = '1') do
begin
//
end;
finally
irc.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
问题是,当我收到私人消息时,ANickname条目会给我以下错误:
Project test.exe引发了exeption类#C00000005,消息为“0x00404673处的访问冲突:读取地址0x03cf4e58
我做错了什么?TIDIRCPRIVEMessageEvent是一个“对象过程”,它隐式引用对象。您为此添加了一个
Self
参数,但忽略了也是事件一部分的TIdContext
参数:
procedure IrcPrivateMessage(ASelf: Pointer; Sender: TIdContext; const ANickname, AHost, ATarget, AMessage: string);
begin
....
end;
您的代码给了我错误:[DCC error]test.dpr(20):E2029';',')”或者“=”预期但“:”发现将有问题的
:
更改为代码>。