ICQ/Konsole
Hallo erstmal!
Also ich wollte mit einen kleinen ICQ Bot basteln, das ganze eigentlich aus keinem bestimmten Grund, nur so aus langeweile. Und ich dachte ich könnte bei der gelegenheit doch endlich mal OOP lernen ;) Ich benutze die TICQLib (http://sourceforge.net/projects/ticqlib), und wollte das ganze als Konsolenanwendung machen. Ich hab die Bot Komponente(TToy) in eine extra Unit(Toy.pas) gepackt. Das ganze sieht nun wie folgt aus:
Delphi-Quellcode:
bzw.
unit Toy;
interface uses SysUtils, ICQWorks, ICQClient; type TToy = Class ICQ: TICQClient; procedure ICQInit(Server: string; Port, UIN: cardinal; Password: string); procedure ICQLogin(Sender: TObject); procedure ICQError(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String); End; implementation procedure TToy.ICQInit(Server: string; Port, UIN: cardinal; Password: string); begin ICQ := TICQClient.Create(nil); ICQ.OnLogin := ICQLogin; //brauch ich das? ICQ.OnError := ICQError; //brauch ich das? ICQ.ICQServer := Server; ICQ.ICQPort := Port; ICQ.UIN := UIN; ICQ.Password := Password; end; procedure TToy.ICQLogin(Sender: TObject); begin WriteLn('eingeloggt'); end; procedure TToy.ICQError(Sender: TObject; ErrorType: TErrorType; ErrorMsg: string); begin if ErrorType = ERR_WARNING then WriteLn('Warning ' + ErrorMsg) else WriteLn('Error ' + ErrorMsg); end; end.
Delphi-Quellcode:
Nun, mein Problem ist, das eigentlich gar nichts passiert. D.h. es wird keine Nachricht versand. und ich weiss nicht warum :(
program BotProg;
{$APPTYPE CONSOLE} uses SysUtils, Toy in 'Toy.pas'; var test: TToy; { TODO -oUser -cConsole Main : Hier Code einfügen } begin test := TToy.Create; WriteLn('Started'); test.ICQInit('login.icq.com',5190,523523523,'PASSWORD'); test.ICQ.SendMessage(023023023,'test'); ReadLn; test.ICQ.LogOff; end. Wäre toll wenn ihr mir helfen könntet...und bitte seid nachsichtig :angel: mfG matrix scripter |
Re: ICQ/Konsole
Ich kenne den TICQCLient nicht wirklich, aber wo rufst du eine Methode auf, die ICQ verbinden lässt?
|
Re: ICQ/Konsole
:oops: Hab ich während des ganzen rumprobierens wohl irgendwann weggelöscht -.-
Ich habs jetzt wieder drin:
Delphi-Quellcode:
Aber funktionieren tut es immernoch nicht. :(
begin
test := TToy.Create; WriteLn('Started'); test.ICQInit('login.icq.com',5190,523523523,'PASSWORD'); test.ICQ.Login; test.ICQ.SendMessage(023023023,'test'); ReadLn; test.ICQ.LogOff; end. Und komischerweise wird auch nie ne Fehlermeldung angezeigt. |
Re: ICQ/Konsole
*Seufz*
Die ICQLib ist veraltet. Sie funktioniert out of the box schlicht und ergreifend nicht mehr. Suche hier im Forum und die wirst ein paar Hacks finden, oder schau im Bugtracker bei Sourceforge, da dürfte sich auch einiges finden. |
Re: ICQ/Konsole
Achso ist das!
Okay dann werd ich mich da mal drüm kümmern. Danke für die schnellen Antworten. :) |
Re: ICQ/Konsole
Hmm seltsamer Weise funktioniert es immernoch nicht..ich werd nochmal genau nachschauen...vllt hab ich doch noch was vergessen/falsch gemacht. :roll:
|
Re: ICQ/Konsole
Ich hab echt keine Ahnung was falsch ist :-(
Die ICQLib müsste jetzt stimmen, zumindest funktioniert jetzt das Beispiel "VerySimpleExample". Aber bei mir tut sich immer noch nichts :( Wäre echt nett wenn mir jemand helfen könnte. |
Re: ICQ/Konsole
Ich habs nochmal mit ner Form versucht
Delphi-Quellcode:
Hier kann ich problemlos verbinden, nur eben bei dem Konsolenprogramm nicht...weiss keiner rat?
unit t;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ICQClient, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; icq: TICQClient; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin icq.Login(); end; procedure TForm1.FormCreate(Sender: TObject); begin icq := TICQClient.Create(nil); icq.ICQServer := 'login.icq.com'; icq.ICQPort := 5190; icq.UIN := 523523523; icq.Password := 'PASSWORD'; end; end. |
Re: ICQ/Konsole
Zitat:
|
Re: ICQ/Konsole
Ok. Werde ich mal machen, danke dir.
Soweit ich weiss habe ich aber auch mal das hier probiert:
Delphi-Quellcode:
Und dort eine Weile gewartet bis ich Enter drückte, so dass eigentlich genug Zeit war um sich einzuloggen. Aber da ging auch nix.
begin
test := TToy.Create; WriteLn('Started'); test.ICQInit('login.icq.com',5190,523523523,'PASSWORD'); test.ICQ.Login; ReadLn;//<------ test.ICQ.SendMessage(023023023,'test'); ReadLn; test.ICQ.LogOff; end. Ich werde aber trotzdem mal nach dem Ereignis suchen das du meinst, und es damit probieren. mfG matrix scripter |
Re: ICQ/Konsole
Also soweit ich weiß heißt ddas Ereignis, wenn der eingeloggt ist
"OnLogin". Vielleicht kannste damit ja was anfangen. |
Re: ICQ/Konsole
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich bekomms irgendwie nicht hin...hab das ganze mal als zip angehängt. wäre nett wenn sichs jemand anschauen könnte und mir sagt was falsch ist. und wie gesagt wenn ich das ganze mit gui mache dann gehts.
matrix scripter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz