Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Die Irc KOmponente von Indy (https://www.delphipraxis.net/43751-die-irc-komponente-von-indy.html)

-homer- 8. Apr 2005 06:54


Die Irc KOmponente von Indy
 
hi,

gibt es ein tutorial zu der irc komponente von Indy?
danke schon mal im voraus


ISOFAIND

Matze 8. Apr 2005 08:36

Re: Die Irc KOmponente von Indy
 
Ein Tutorial kenne ich nicht, aber ich habe das dmals durch AUsprobieren im Großen und Ganzen hinbekommen, so schwer ist das nicht, hier mal ein paar Auszüge (es kann sehr schlechter Code sein, da das schon eine ganze Weile her ist):

Daten zuweisen und verbinden:
Delphi-Quellcode:
  IdIRC1.Nick := Edit1.Text;
  IdIRC1.AltNick := Edit2.Text;

  IdIRC1.RealName := Edit6.Text;
  IdIRC1.Username := Edit7.Text;

  IdIRC1.Host := Edit3.Text;
  IdIRC1.Port := StrToInt(Edit4.Text);
  IdIRC1.Password := Edit5.Text;

  IdIRC1.Connect(3000);
Verbindung trennen:
Delphi-Quellcode:
  if IdIRC1.Connected then
    IdIRC1.Disconnect;
Raum betreten:
Delphi-Quellcode:
  //Edit8: Channel; Edit9: Passwort zum Channel
  //Passwort muss nicht angegeben werden, falls es keines gibt
  IdIRC1.Join(Edit8.Text, Edit5.Text);
Ich weiß nicht mehr genau, was das macht, aber ich glaube, es überprüft, ob man sich in einem Channel befindet:
Delphi-Quellcode:
procedure TForm1.IdIRC1System(Sender: TObject; AUser: TIdIRCUser;
  ACmdCode: Integer; ACommand, AContent: String);
begin
  if ACmdCode = 376 then
    //Button zum Betreten deaktivieren / aktivieren
    SpeedButton3.Enabled := true else
      SpeedButton3.Enabled := false;
end;
Fehler anzeigen:
Delphi-Quellcode:
procedure TForm1.IdIRC1Error(Sender: TObject; AUser: TIdIRCUser; ANumeric,
  AError: String);
begin
  if AError = '10049' then
    Application.MessageBox('Sie haben eine ungültige Adresse eingegeben.' +
' Beachten sie bitte, dass eine IP - Adresse folgender schreibweise unterliegt.' + ' XXX.XXX.XXX.XXX'
+ #10#13 + 'z.B.: 172.0.0.1', 'Hinweis', 64);

  if AError = '10061' then
    Application.MessageBox('Die Serveranwendung läuft nicht auf dem angegebenen Server, oder die Portnummer ist falsch.!', 'Hinweis', 64);

  if AError = '10065' then
    Application.MessageBox('Es besteht keine Verbindung zum Netz.', 'Hinweis', 64);
end;
Namen der leute im Channel ermitteln:
Delphi-Quellcode:
procedure TForm1.IdIRC1Names(Sender: TObject; AUsers: TIdIRCUsers;
  AChannel: TIdIRCChannel);
var i: integer;
begin
  Listbox1.Clear;
  for i := 0 to IDIRC1.Users.Count - 1 do
    Listbox1.Items.Add(IDIRC1.Users.Items[I].Nick);
end;
Da gab es damals bei mir ein paar Probleme:
Neue Mitglieder erkennen:
Delphi-Quellcode:
procedure TForm1.IdIRC1Joined(Sender: TObject; AChannel: TIdIRCChannel);
var i: integer;
begin
  Listbox1.Clear;
  for i := 0 to IDIRC1.Users.Count - 1 do
    Listbox1.Items.Add(IDIRC1.Users.Items[I].Nick);
end;
Status von IRC anzeigen:
Delphi-Quellcode:
procedure TForm1.IdIRC1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  AddText('Chat-Status', AStatusText);
end;
IRC-Melungen empfangen:
Delphi-Quellcode:
procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
  //konnte man bei mir deaktivieren, weil das unheimlich nervt *g*
  if CheckBox1.Checked then
    AddText('Chat-Meldung', ACommand);
end;
Beim Betreten irgendwie nochmal die Namen ermitteln, frag mich nicht, was ich da gemacht habe:
Delphi-Quellcode:
procedure TForm1.IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
var i: integer;
begin
  Listbox1.Clear;
  for i := 0 to IDIRC1.Users.Count - 1 do
    Listbox1.Items.Add(IDIRC1.Users.Items[I].Nick);
end;

Also das ist nur mal so grob, aber für den Anfang und zum Chatten dürfte es reichen.

-homer- 8. Apr 2005 12:02

Re: Die Irc KOmponente von Indy
 
ohh danke, super es klappt ;)

DGL-luke 9. Apr 2005 14:55

Re: Die Irc KOmponente von Indy
 
bei mir gibt es in der komponente weder onMessage noch onReceive...

benutze indy 10 für d7.

was soll ich machen? ich will doch auch sachen empfangen.....

EDIT: habs gefunden....

getresponse-methode.

EDIT2: ne das kanns aber auhc nicht sein.....


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 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-2025 by Thomas Breitkreuz