AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Komponente zur Laufzeit erzeugen und events setzen? [TEIL2]
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente zur Laufzeit erzeugen und events setzen? [TEIL2]

Ein Thema von alienous · begonnen am 21. Aug 2006 · letzter Beitrag vom 22. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
alienous

Registriert seit: 27. Jan 2006
94 Beiträge
 
#1

Komponente zur Laufzeit erzeugen und events setzen? [TEIL2]

  Alt 21. Aug 2006, 12:26
da der mod meinte das meine zweite frage aus dem anderen thread nich zum thema passt, aber mir kein anderes thema einfiel, weils ser wohle zum thema passt, stelle ich die frage nun nocheinmal! der mod is ja off und ich suche dringend ne antwort, also hier nochmal:

Delphi-Quellcode:
procedure onConnect(Sender: TObject);
begin
  // wie greife ich auf die aufrufende irccompo zu?
end;

procedure test;
var stringlist : Tstringlist;
begin

  stringlist := Tstringlist.Create;
  stringlist.AddObject('name1',TIdIRC.Create(Form1));
  tidirc(stringlist.Objects[0]).OnConnect := onConnect;
  stringlist.Free;

end;
@meflin, ja hatte da einen fehler gehabt...
ist der aufruf so nun korrekt? wie greife ich in der procedure onconnect; nun auf die aufrufende componente zu?
Sender:TObject habe ich vom event der irccompo übernommen!

danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 21. Aug 2006, 12:31
Delphi-Quellcode:
procedure TForm.onConnect(Sender: TObject);
begin
  // wie greife ich auf die aufrufende irccompo zu?
  (Sender as TidIrc).<Eigenschaft>
end;

procedure TForm.test;
var stringlist : Tstringlist;
begin

  stringlist := Tstringlist.Create;
  stringlist.AddObject('name1',TIdIRC.Create(Form1));
  tidirc(stringlist.Objects[0]).OnConnect := onConnect; //Warum StringListe? Nimm doch besser einen dyn Array
  stringlist.Free; /7In diesem fall schlecht! Fahr mal mit einem Auto, was du verschrottet hast.

end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 21. Aug 2006, 12:34
Nungut. Du rufst das Free immernoch gleich auf nachdem du die Instanzen erstellst. Damit hast du nichts von ihnen, da sie gleich nach dem erstellen wieder im Nirvana landen. Das Free gehört ins OnClose deiner Anwendung!

In der Prozedure müsstest du auf die aufrufende Instanz über self.Blubb zugreifen können oder

btw wurde das Thema nicht geschlossen weil die Frage nicht zum Thema passte sondern weil man generell nur eine Frage pro thread stellen soll

  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.879 Beiträge
 
Delphi 12 Athens
 
#4

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 21. Aug 2006, 12:37
Zitat von alienous:
da der mod meinte das meine zweite frage aus dem anderen thread nich zum thema passt,
das hat SirThornberry nicht gesagt, er hat nur darauf hingewiesen, dass pro Threat nur eine Frage erlaubt ist

Zitat von alienous:
stelle ich die frage nun nocheinmal!
so war das ja auch gedacht ...

Zitat von alienous:
der mod is ja off ...
das ist nun ziemlich daneben. Der Mod macht hier nur seine Arbeit. Das erneute Stellen der Frage ist ok, die Art und Weise finde ich ziemlich daneben.

Zitat von alienous:
wie greife ich in der procedure onconnect; nun auf die aufrufende componente zu?
Sender:TObject habe ich vom event der irccompo übernommen!
über den Sender. Dieser sollte die aufrufende Komponente enthalten.

TIdIRC (Sender) sollte Dich Deinem Problem näher bringen.

Hope it helps

onlinekater

[Edit]
Wo ist der rote Kasten?
[/Edit]
Thomas Breitkreuz
  Mit Zitat antworten Zitat
alienous

Registriert seit: 27. Jan 2006
94 Beiträge
 
#5

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 21. Aug 2006, 13:52
sry, aber mir wiederstrebt es einfach, ein neuen thread zu eröffnen, vorallem wenn die fragen doch irgendwie zusammenhängen. vorallem wissen die threadleser direkt, wo ich hänge und was ich schon alles gemacht habe, bei nem neuen thread mussich alles wieder von neuem erklären...

aber nun gut, ich werd das gleich wennich daheim binn ausprobieren! vielen dank
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 21. Aug 2006, 15:17
du kannst ja in dem neuen Thread einen Link auf diesen setzen mit dem Hinweis das sich die Frage darauf bezieht. Letzendlich haben auch recht viele Fragen in dem Forum etwas mit Delphi zu tun. Trotzdem ist dies keine Rechtfertigung alle Fragen die man hat in den gleichen Beitrag zu packen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
alienous

Registriert seit: 27. Jan 2006
94 Beiträge
 
#7

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 22. Aug 2006, 18:31
moin!

habs jetzt mal mit einer klasse versucht, aber irgendwie funktionierts nicht.

Delphi-Quellcode:
unit UnitTBot;

interface

uses IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdIRC, IrcBlowfish, UnitTChannel,
  Windows, Forms;

type
  TBot = class (TObject)
    private
      FIRCConn : TIdIRC;

    public
      procedure Connect();
      constructor Create();
      destructor Destroy;
  end;

implementation

procedure Delay(Milliseconds: Integer);
//.... kennt ihr sicher ;)

Constructor TBot.Create;
begin
  //nochnix
end;

procedure FOnMessage(Sender: TObject; AUser: TIdIRCUser; AChannel: TIdIRCChannel; Content: String);
var text : String;
begin
  text := Content;
end;

procedure TBot.Connect;
begin
  FIRCConn := TIdIRC.Create(nil);
  FIRCConn.OnMessage := FOnMessage;

  FIRCConn.Username := 'hust';
  FIRCConn.Nick := 'checkkx';
  FIRCConn.Host := 'localhost';
  FIRCConn.Port := 6667;
  FIRCConn.Connect;

  Delay(5000);
  FIRCConn.Join('#test');
end;

destructor TPreBot.Destroy;
begin
  if FIRCConn.Connected then
    FIRCConn.Quit('');
  FIRCConn.Free;
  inherited Destroy;
end;

end.
das blöde ist, in der zeile mit der zuweisung, "FIRCConn.OnMessage := FOnMessage;" gibts beim compilieren nen fehler: "[Pascal Error] UnitTBot.pas(57): E2009 Incompatible types: 'method pointer and regular procedure'"

kann mir da jemand weiterhelfen?

danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 22. Aug 2006, 18:34
Muß auch ne Methode sein keine Procedure:

procedure TBot.FOnMessage(Sender: TObject; AUser: TIdIRCUser; AChannel: TIdIRCChannel;
Markus Kinzler
  Mit Zitat antworten Zitat
alienous

Registriert seit: 27. Jan 2006
94 Beiträge
 
#9

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 22. Aug 2006, 18:40
hm, passt, jetz wirds compiliert, hab im privateteil noch den procedure-kopf eingesetzt, aber ich verstehe nicht, wieso das nun funktioniert! worin liegt da der unterschied? kannste mir das noch erklären?

danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Komponente zur Laufzeit erzeugen und events setzen? [TEI

  Alt 22. Aug 2006, 18:49
Eventhandler-Properties sind als Methodenzeiger implemnetiert und nicht als Prozedurenzeiger.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:24 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