Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Die Irc KOmponente von Indy

  Alt 8. Apr 2005, 09:36
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 = '10049then
    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 = '10061then
    Application.MessageBox('Die Serveranwendung läuft nicht auf dem angegebenen Server, oder die Portnummer ist falsch.!', 'Hinweis', 64);

  if AError = '10065then
    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.
  Mit Zitat antworten Zitat