Entwickler-Ecke

Internet / Netzwerk - Fragen zu IRC INDY Komponente


darktrym - Fr 04.06.04 15:55
Titel: Fragen zu IRC INDY Komponente
Leider finde ich keine Erläuerungen zu IDIRC(Indy Komponente) weder sind Demos vorhanden noch bei google ein BSP-Prog zu finden.Was macht die Proz. raw(), wie sende ich private Nachrichten an einen User, wie kann ich irc befehle nutzen im chat(sendcmd?), wie aktualisiere ich meine Chatmitgliedsliste? Wie kann kann ich so nette Farben im Titelchannel erzeugen?

So das wars fürs erste.


inselberg - Mi 16.06.04 22:36

Zitat:
Was macht die Proz. raw()

raw daten senden ... schau dir mal die mirc/raw hilfe an gibts beispiele...

Zitat:
wie sende ich private Nachrichten an einen User

privmsg

Zitat:
Wie kann kann ich so nette Farben im Titelchannel erzeugen?

#3 farbe,hintergrund...

so aus dem stehgreif ... kann dir aber gerne en paar bsp programme raussuchen, da es schon was länger her ist dass ich damit was gemacht hab...

grüsse


__X__ - So 14.05.06 19:16

user profile iconinselberg hat folgendes geschrieben:

...
so aus dem stehgreif ... kann dir aber gerne en paar bsp programme raussuchen, da es schon was länger her ist dass ich damit was gemacht hab...

grüsse

entschuldigung, dass ich diesen alten Thread wieder rauskrame..aber ich habe keinerlei Beispiele zu IRC mit Indy gefunden...vllt kann jemand helfen? :(


__X__ - Mo 15.05.06 19:46

Komme einfach nicht weiter...kann nicht mal einen channel joinen...was ist hier falsch?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
    IdIRC1.Host := 'de.quakenet.org';
    IdIRC1.Port := 6667;
    IdIRC1.Username := 'blub';
    IdIRC1.Realname := 'blub bla';
    IdIRC1.Nick := 'blubblub';

    IdIRC1.Connect(3000);
...
procedure TToolForm.IdIRC1Connected(Sender: TObject);
begin
  IdIRC1.Join('#channel');
end;

Aber irgendwie habe ich das gefühl, er connected nichtmal?! Obwohl IdIRC1.Connected true zurückgibt?


__X__ - Mi 21.06.06 17:00

pls help :( habe immer noch das problem und finde nix bei google...
*push*


matze - Mi 21.06.06 18:14

schreib den Joi mal nicht in das OnConnet Event rein, sondern drekt nach dem Connect Befehl.


__X__ - Fr 23.06.06 14:01

ahh ok vielen Dank, geht jetzt!!!

Ein Beispiel wäre trotzdem nicht schlecht, für PMs, Nachrichten senden, empfangen etc...
Da hat niemand was?


Damian - Mi 20.09.06 19:50

hier ist mal meine kleine unfähige IRC client ;)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdIRC;

type
  TForm1 = class(TForm)
    IdIRC1: TIdIRC;
    Memo1: TMemo;
    Timer1: TTimer;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
idIRC1.Connect();
timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
memo1.Lines.Add(idIRC1.ReadLn() );
end;

end.




Weiß einer vll was dort falsch ist? achja die connect daten gebe ich in visual ein

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt


__X__ - Mi 20.09.06 20:23

Du musst vllt noch einem Channel joinen?


Delphi-Quelltext
1:
IdIRC1.Raw('JOIN #test');                    


Kann auch am Server liegen (je nachdem wohin du connectest), lass dir einfach mal die IRC nachrichten ausgeben...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TToolForm.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: Stringvar Suppress: Boolean);
begin
  Memo2.Lines.add('[RAW]: ' + AContent);
end;

procedure TToolForm.IdIRC1System(Sender: TObject; AUser: TIdIRCUser;
  ACmdCode: Integer; ACommand, AContent: String);
begin
    Memo2.Lines.Add('[System]'+AContent);
end;

procedure TToolForm.IdIRC1SocketError(Sender: TObject; ASocket,
  AMsg: String);
begin
    Memo2.Lines.Add('[SocketError]'+AMsg);
end;


Wenn du willst kann ich dir auch mal ein IRC-Chat-Beispielprogramm schicken.


Damian - Do 26.10.06 17:59

Jah also bei manchen servern geht es. Bei manche wieder nicht ^^. Bin momentan unter linux, wenn ich wieder unter windows bin, denn probier ich das mal aus. Jah schick mir mal ein IRC beispiel programm. damian@elsw.de


__X__ - Do 26.10.06 22:21

Ich habs hochgeladen. Du findest das Beispiel hier [http://home.arcor.de/spamonly/Programmieren/IRC-Test.rar].


Damian - Fr 27.10.06 00:58

Danke


Bonf - Fr 05.01.07 18:06

Hallo __X__,

Ich habe ein Problem mit den Befehlen:



Delphi-Quelltext
1:
2:
3:
4:
5:
procedure IdIRC1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
procedure IdIRC1System(Sender: TObject; AUser: TIdIRCUser;
      ACmdCode: Integer; ACommand, AContent: String);
procedure IdIRC1SocketError(Sender: TObject; ASocket, AMsg: String);


unter "

Delphi-Quelltext
1:
type                    
"

Also erstens verstehe ich nicht richtig wie du daraufkommts, ich meine idIRClStatus und dann all die Parameter, wie kanns du das so dahinschreiben, das muss du doch irgendwo herhaben?
normalerweise kommen solche procedures ja dahin, wenn man einen doppelclick auf ein object macht, aber auf welches objekt würde dies sich dann besziehen?


Ganz zum Schluss in deinem Program, da schreibst du folgendes:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TToolForm.IdIRC1Status(ASender: TObject;
  const AStatus: TIdStatus; const AStatusText: String);
begin
  Memo2.Lines.Add('[Status]'+AStatusText);
end;

procedure TToolForm.IdIRC1System(Sender: TObject; AUser: TIdIRCUser;
  ACmdCode: Integer; ACommand, AContent: String);
begin
    Memo2.Lines.Add('[System]'+AContent);
end;

procedure TToolForm.IdIRC1SocketError(Sender: TObject; ASocket,
  AMsg: String);
begin
    Memo2.Lines.Add('[SocketError]'+AMsg);
end;


Da sagst du ja dann was die verschiedene Procedures machen sollen, also
zb. Memo2.Lines.Add usw.

das verstehe ich. Aber nicht wie du

Delphi-Quelltext
1:
2:
TToolForm.IdIRC1SocketError(Sender: TObject; ASocket,
  AMsg: String);
schreiben kannst.


Zweitens,  AUser: TIdIRCUser, in den procedures kennt mien delphi nicht, also er sagt immer:
Identifier not declared: 'TIdIRCUser'.
Bei TIdIRCChannel macht er das auch.

Ich benutze Delphi 2005.


Vielen Dank mal im Voraus.
mfg

Moderiert von user profile iconraziel: I- durch Delphi-Tags ersetzt


jaenicke - Fr 05.01.07 18:22

Erstmal :welcome: hier im Forum!

Erst einmal was allgemeines:
Damit der Quelltext korrekt dargestellt wird, benutze bitte die Delphi-Tags!
Hier steht wie das geht:
http://www.delphi-forum.de/help_schreiben_bbcodes_source.html&sub=,19,27,32
Die musst du natürlich nicht selbst tippen, du musst nur über dem Eingabefeld auf Bereiche und in diesem Fall dann auf das Plus hinter Delphi einmal vor und einmal nach dem Code schreiben klicken. Mehr dazu hier:
http://www.delphi-forum.de/help_schreiben_bbcodes.html&sub=,19,27,32
Mit dem mittleren Knopf rechts oben über deinem Beitrag kannst du das auch noch nachträglich ändern.

Zum Thema: Ich nehme an, die Methoden kommen von der Seite Ereignisse im Objektinspektor... Dort musst du nur doppelt auf die entsprechende Zeile klicken.

Wo TIdIRCUser deklariert ist, kann ich dir aber nicht sagen, da ich die Komponente nicht kenne.


Bonf - Sa 06.01.07 19:07

Hallo jaenicke.

Danke für die schnelle Antwort.
Ich werde in Zukunft immer versuchen die richitgen codes zu nehmen, damit alles anständig dargestellt wird.

Also zum Thema, In der Seite "Ereignisse" stehen für den TIdIRC nur Events wie:
Onaway
OnBanList ..

und ein doppelclick funtioniert da nicht.

Also das Projekt könnt ihr euch hier [http://home.arcor.de/spamonly/Programmieren/IRC-Test.rar] herunterladen.

Aber dies ist das von __X__ , aber die Fragen bleiben die Selben :)

Danke.
MFG
Bonf


__X__ - Sa 06.01.07 19:19

nur auf die schnelle:
hast du indy überhaupt korrekt installiert?


jaenicke - Sa 06.01.07 19:30

user profile icon__X__ hat folgendes geschrieben:
nur auf die schnelle:
hast du indy überhaupt korrekt installiert?

Sonst hätte er ja die Komponente nicht im Objektinspektor... :roll:

user profile iconBonf hat folgendes geschrieben:
Also zum Thema, In der Seite "Ereignisse" stehen für den TIdIRC nur Events wie:
Onaway
OnBanList ..

und ein doppelclick funtioniert da nicht.

Du musst rechts daneben auf das leere Eingabefeld (die ComboBox) doppelklicken... Dann landest du im Quelltext, wo du zu dem Ereignis die entsprechende Ereignisbehandlung schreiben kannst.


Bonf - Di 09.01.07 23:20

An jaenicke,

jaenicke hat folgendes geschrieben:
Du musst rechts daneben auf das leere Eingabefeld (die ComboBox) doppelklicken... Dann landest du im Quelltext, wo du zu dem Ereignis die entsprechende Ereignisbehandlung schreiben kannst.


Ok, das wusste ich nicht, danke jetzt ist das schon klarer. :D

Aber da merke ich, dass
IdIRC1Status
vorhanden, ist, ich kann also ein Doppelclick rechts daneben machen und dann wird eine Procedure erstellt aber ich kann nirgendwo
IdIRC1System
IdIRC1SocketError
finden. Kann es sein, dass die im Objektinspector die Events anders heißen wie nachher im Quellcode, weil im Objektinspektor steht ja auch immer "On"Status und "On"Connect, obwohl nachher nur noch IdIRC1Status da steht.
Vielleicht heißen die beiden Events
IdIRC1System
IdIRC1SocketError
ja dort ganz anders, denn OnSystem und OnSocketError finde ich nicht :( :?:


Und zu meiner zweiten Frage
Bonf hat folgendes geschrieben:
Zweitens, AUser: TIdIRCUser, in den procedures kennt mien delphi nicht, also er sagt immer:
Identifier not declared: 'TIdIRCUser'.
Bei TIdIRCChannel macht er das auch.


hast du da eine Idee?


jaenicke - Di 09.01.07 23:24

Ok, ich seh mir die Komponente mal selbst an...

Was die andere Frage angeht: naja, das wird in einer Unit deklariert sein, die nicht in deiner uses steht. Aber das weiß ich genauer, wenn ich mir das mal angesehen habe...


Bonf - Di 09.01.07 23:33

Vielen Dank, wirklich nett, dass du mir so viel dabei helfst.

MFG
Bonf


jaenicke - Di 09.01.07 23:57

Also ich würde nach kurzem Ansehen sagen, dass das daran liegt, dass du Indy 10 hast, bei Indy 9 ist in der Unit noch ACommand drin...

Ich habe aber leider nicht die Zeit, mich genauer damit zu beschäftigen. Du könntest Delphi 2005 deinstallieren und bei der erneuten Installation Indy 9 statt Indy 10 auswählen. Dann würde das wohl so funktionieren, wie du es jetzt hast.
Ob das so sinnvoll ist, weiß ich nicht... Aber viel anderes kann ich dazu jetzt nicht sagen.

Nur soviel: ich denke, du kannst statt OnSocketError OnServerError benutzen.


Bonf - Sa 13.01.07 22:01

Hi,
ok danke, ich spiele jetzt ein bißchen mit dem indy 10, und dann poste ich wenn ich was gefunden habe.


Jupp1966 - Di 19.02.13 22:18

user profile icondarktrym hat folgendes geschrieben Zum zitierten Posting springen:
Leider finde ich keine Erläuerungen zu IDIRC(Indy Komponente) weder sind Demos vorhanden noch bei google ein BSP-Prog zu finden.Was macht die Proz. raw(), wie sende ich private Nachrichten an einen User, wie kann ich irc befehle nutzen im chat(sendcmd?), wie aktualisiere ich meine Chatmitgliedsliste? Wie kann kann ich so nette Farben im Titelchannel erzeugen?

Ein Beispielprogramm findest du auf http://home.arcor.de/elmar-baumann/ircclient.htm
Ich habe dieses Programm damals mit BCB6 und Indy9 erstellt,
falls du mit BCB6 entwickelst ist eine Hilfe installiert,

IdIRC->Raw() liefert dir den gesamten Datenverkehr zwischen Server und deinem Client,

private nachrichten an einen anderen benutzer auf einem IRC-Server sendet man mit IdIRC->Say(Username,Text);
die Userliste eines Chats musst du selbst ständig aktualisieren während dein Programm läuft :-)

Das Farbsystem läuft über Farbcodes die du senden und empfangen musst, dein Client muss in der Lage sein diese Codes
zu erkennen um sie darstellen zu können


Gruß

Elmar

Moderiert von user profile iconNarses: Zitat repariert.