AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Irc mit Indy

Irc mit Indy

Ein Tutorial von MSSSSM · begonnen am 13. Mai 2008 · letzter Beitrag vom 2. Aug 2018
Antwort Antwort
Seite 2 von 4     12 34   
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Irc mit Indy

  Alt 2. Aug 2018, 08:25
Hey,

Ich komme gerade einfach nicht weiter und habe dazu auch schon einen Thread eröffnet... https://www.delphipraxis.net/197331-...ml#post1409330

LG ford
  Mit Zitat antworten Zitat
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Irc mit Indy

  Alt 2. Aug 2018, 10:01
Ok, der Client geht nun, aber nur ohne Proxy, mit habe ich es immer noch nicht hinbekommen...

Wie heißt denn das OnMessage-Ereignis in der neuen Version??
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Irc mit Indy

  Alt 2. Aug 2018, 10:04
Warum führst du jetzt hier in einem 9 Jahre alten Thread Monologe, statt in deinem eigenen IRC-Thread zu posten?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
ford42

Registriert seit: 2. Okt 2015
60 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Irc mit Indy

  Alt 2. Aug 2018, 10:20
Dachte, dass das vlt auch andere interessiert, die das machen wollen und auf diesen Thread stoßen...

EDIT: Würde es hier drin stehen müsste ich nicht fragen und in nem anderen Thread steht das vlt versteckt drin...
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Irc mit Indy

  Alt 16. Mai 2008, 14:27
Hi,

Nickname?

Mein Test-Code:

Delphi-Quellcode:
//IRC = TIdIRC
      IRC.OnPrivateMessage := HandleMsg;
      IRC.OnNotice := HandleMsg;
      IRC.OnWallops := HandleMsg2;
      //IRC.OnRaw := HandleRaw;
      IRC.Nickname := NickEdit.Text;
      IRC.RealName := 'FAlter Bot';
      IRC.Username := 'FAlterBot';
      IRC.Host := ServerEdit.Text;
      IRC.Port := StrToIntDef(PortEdit.Text, IRC.Port);
      IRC.Connect;
Muss natürlich noch verbessert werden... Ist ja erstmal nur zum Test.

Mfg
FAlter

[edit]

Aus der IdIRC.Pas: (Indy 10)
Delphi-Quellcode:
procedure TIdIRC.CommandPRIVMSG(ASender: TIdCommand);
var
  LTmp: String;
begin
  if ASender.Params[0][1] = #1 then
  begin
    ParseCTCPQuery(ASender.Params[1], ASender.Params[0]);
  end
  else if Assigned(FOnPrivMessage) then
  begin
    LTmp := copy(ASender.Params[1], 2, length(ASender.Params[1]) - 2); ///!!!!!!!!!!!!!!!
    OnPrivateMessage(ASender.Context, FSenderNick, FSenderHost, ASender.Params[0], LTmp);
  end;
end;
In der markierten Zeile liegt ein Fehler. Das -2 ist falsch und kann sogar komplett weggelassen werden, ansonsten kommt da -1 hin. Das erklärt das Fehlen des letzten Buchstabens.

Die anderen Worte liegen vermutlich in Params[3]..Params[Count-1], schätz ich mal.

[/edit]

[edit]
Mit dieser Änderung gehts erstmal. Ist natürlich nicht gerade optimal, wenns erst auseinandergepflückt und hier wieder zusammengesetzt wird, erstmal reichts jedoch. Der Bot muss "liest" trotzdem schneller als ein Mensch.

Delphi-Quellcode:
procedure TIdIRC.CommandPRIVMSG(ASender: TIdCommand);
var
  LTmp: String;
  I: Integer;
begin
  if ASender.Params[0][1] = #1 then
  begin
    ParseCTCPQuery(ASender.Params[1], ASender.Params[0]);
  end
  else if Assigned(FOnPrivMessage) then
  begin
    LTmp := copy(ASender.Params[1], 2, length(ASender.Params[1]));
    for I := 2 to ASender.Params.Count - 1 do
      LTmp := LTmp + ' ' + ASender.Params[I];
    OnPrivateMessage(ASender.Context, FSenderNick, FSenderHost, ASender.Params[0], LTmp);
  end;
end;

procedure TIdIRC.CommandNOTICE(ASender: TIdCommand);
var
  LTmp: String;
  I: Integer;
begin
  if ASender.Params[0][1] = #1 then
  begin
    ParseCTCPReply(ASender.Params[1], ASender.Params[0]);
  end
  else if Assigned(FOnNotice) then
  begin
    LTmp := copy(ASender.Params[1], 2, length(ASender.Params[1]));
    for I := 2 to ASender.Params.Count - 1 do
      LTmp := LTmp + ' ' + ASender.Params[I];
    OnNotice(ASender.Context, FSenderNick, FSenderHost, ASender.Params[0], LTmp);
  end;
end;
[/edit]
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: Irc mit Indy

  Alt 20. Dez 2008, 14:54
Ich habe das Tutorial mal aus gegebenem Anlass ins Englische übersetzt, damit unser User dangerduck auch was davon versteht. Ich hoffe, MSSSSM hat nichts dagegen.

---

Hello and welcome!

This post is about the Indy IRC component.

You can download it here.

Let's begin:

First, put the Indy IRC component on your form.

Form.Create should now look like the following:
Delphi-Quellcode:
IdIRC1.Nick:='MyNick'; // Defines the nickname

IdIRC1.Host:='irc.server.org'; // Defines the Server

IdIRC1.Port:=6667; //Irc Port
With this you define the settings for the connection.

Now we have to connect:

Put a button on your form and create the onClick-event:
The buttons caption should be 'Connect'

Put in this code:
Delphi-Quellcode:
try // try ...
IdIRC1.Connect(); // ... to connect
except // ... when an error happens ...
showMessage('Fehler beim Verbinden!'); // ... show a message
end;
You should make a buton with the folling code in the onClick-event
IdIRC1.Join('#lima-city'); Now you can already connect and join a channel.
But to display messages later, you should put a the TMemo component on the form.

The you have to add two events: OnReceive and OnMessage.

OnReceive (It only works with this additional event):
Memo1.lines.add(ACommand); // add to memo OnMessage:
Memo1.lines.add(AUser.Nick+': '+Content); // Add message
Now you can already receive a message, but it lacks writing yet.

Put a TEdit and a TButton component on your form.

The button gets the caption "Send".

The OnClick-event is:

Delphi-Quellcode:
IdIRC1.Say('#CHANNEL',Edit1.Text); // Send message to the channel
Memo1.Lines.Add(IdIRC1.Nick+': '+Edit1.Text); // Ad to memo, because the OnMessage event won't be called when sending own messages
Now you can send and receive messages with that.

Put the following into the forms OnClose event:

IdIRC1.Disconnect(); // to stop

Additional code:
Create a TListBox.
Create the OnNames event and write:
Delphi-Quellcode:
var
 i: integer;
//begin
for i:=0 to AUsers.Count-1 do // execute as many times as users in the channel
ListBox1.Items.Add(AUsers.Items[i].Nick); // Add to ListBox
//end
Now you have a working IRC client!

Tip: Build an IRC-bot, you only have to work with the content in OnMessage!
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Irc mit Indy

  Alt 20. Dez 2008, 15:05
Hi,

Du solltest noch dazu schreiben, ob es sich um die Indy 9 oder Indy 10 handelt!
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

Re: Irc mit Indy

  Alt 20. Dez 2008, 15:08
Zitat von Die Muhkuh:
Hi,

Du solltest noch dazu schreiben, ob es sich um die Indy 9 oder Indy 10 handelt!
Ich als Übersetzer oder MSSSSM als Autor? Er hat oben geschrieben, dass er Indy 10 benutzt.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Irc mit Indy

  Alt 20. Dez 2008, 15:10
Er als Autor. Ich meinte, dass er es ins Tutorial schreiben soll und nicht nur in ein paar Beiträgen drunter.
  Mit Zitat antworten Zitat
dangerduck

Registriert seit: 14. Dez 2008
39 Beiträge
 
#10

Re: Irc mit Indy

  Alt 20. Dez 2008, 17:07
Danke!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34   

Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz