Einzelnen Beitrag anzeigen

Avatar_SBV

Registriert seit: 16. Sep 2009
1 Beiträge
 
#5

Re: INDY 10 IRC -> Raw Nickname?

  Alt 16. Sep 2009, 23:55
Ich tue für meine Sprache - ich aus Russland Abbitte. Aber ich denke klar ich werde schreiben
1. Wir nehmen den Distributionssatz Indy (besser als Version 10.5.6). Ist nicht einsteilbar.
2. Wir suchen die Datei IdIRC.pas und ist es im Texteditoren geöffnet.
3. Wir suchen darin die Prozedur
Zitat:
procedure TIdIRC.DoBeforeCmd(ASender: TIdCommandHandlers; var AData: string; AContext: TIdContext);
4. Wir erläutern die Zeilen

Delphi-Quellcode:
{  if TextStartsWith(AData, ':') then begin
    LTmp := Fetch(AData, #32);
    Delete(LTmp, 1, 1); // remove ':'
    FSenderNick := Fetch(LTmp, '!');
    FSenderHost := LTmp;
  end else begin
    FSenderNick := '';
    FSenderHost := '';
  end;}
5. Wir sparen die Veränderungen auf und nur ist danach Indy von neuem einsteilbar.
6. Jetzt bei der Ausführung

Delphi-Quellcode:
procedure TForm16.IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
  AMessage: string);
begin
  memo3.lines.add(AMessage);
end;
Sie werden dass jenes типо seiner sehen

Zitat:
:SecureServ PRIVMSG Avatar :VERSION
7. Jetzt können Sie mit der vollen Zeile arbeiten. Ich habe so gemacht - hat diese Zeile zur Art Indy9 gebracht

Delphi-Quellcode:
procedure TForm16.IdIRC1Raw(ASender: TIdContext; AIn: Boolean;
  AMessage: string);
var AUserNick,ACommand,AContent,AUserAddress:string;
begin
AUserNick:='';
ACommand:='';
AContent:=AMessage;
if copy(AContent,1,1)=':then
   begin
   AContent:=copy(AContent,2,length(AContent)-1);
   AUserNick:=copy(AContent,1,pos(' ',AContent)-1);
   if pos('!',AUserNick)<>0 then
      begin
      AUserNick:=copy(AUserNick,1,pos('!',AUserNick)-1);
      AUserAddress:=copy(AUserNick,pos('!',AUserNick)+1,length(AUserNick)-pos('!',AContent));
      end else AUserNick:='';
   AContent:=copy(AContent,pos(' ',AContent)+1,length(AContent)-pos(' ',AContent));
   end;
ACommand:=copy(AContent,1,pos(' ',AContent)-1);
AContent:=copy(AContent,pos(' ',AContent)+1,length(AContent)-pos(' ',AContent));

Memo7.Lines.Add(AUserNick+'---'+ACommand+'---'+AContent);
end;
  Mit Zitat antworten Zitat