![]() |
Re: Procedure als Event definieren? Wenn ja, wie?
Zitat:
Genauso muß nun deine Procedur oder Methode aufgerbaut sein. Steht hinter dessen Typendeklaration ein "of object", dann muß es eine Methode werden, also innerhalb "irgendeiner" Klasse, bzw. eines instanziierten Objektes liegen. Hierfür kannst du notfalls auch eine eigene Klasse anlegen, davon ein Objekt erstellen und die Methode dieses Objektes nun dem Event zuweisen. |
Re: Procedure als Event definieren? Wenn ja, wie?
wenn ich das event auf einer form anspreche schauts so aus:
Delphi-Quellcode:
das ist natürlich nur ein auszug...
TMain = class(TForm)
procedure ASQLite3Query1BeforeInsert(DataSet: TDataSet); end; implementation procedure TMain.ASQLite3Query1BeforeInsert(DataSet: TDataSet); begin [...] end; Aber da das objekt dynamisch in einer Unit erzeugt wird ists net so einfach für mich -.- Was macht eigentlich das "stdcall"? |
Re: Procedure als Event definieren? Wenn ja, wie?
Zitat:
Zitat:
Zitat:
Im Pascal werden Parameter vorzugsweise in die Register gelegt, wärend beim StdCall die Parameter im Stack landen. (wie es oftmal in C++ und der WinAPI der Fall ist) Was genau passiert ist aber für dich nicht wichtig, sondern nur daß dieses übereinstimmt. PS: Wenn die Signatur nicht stimmt, dann meckert Delphi, bzw. der Compiler schon rum. |
Re: Procedure als Event definieren? Wenn ja, wie?
ich komm echt net weiter!!!
Ach so eine SCHEI*E... -.- ich habe diese funktion:
Delphi-Quellcode:
egal was ich mache, ich kriegs net hin :cry: :cry: :cry: :cry: :cry:
procedure BeforeInsert(DataSet: TDataSet);
begin Showmessage(Command.SQL.Text); end; ich will doch nur
Delphi-Quellcode:
(Command vom Typ TASQLite3Query)
command.BeforeInsert := BeforeInsert(nil);
-> Inkompatible Typen: TDataSetNotifyEvent und procedure... ich könnte heulen weil ich nicht ein Wort hier verstehe und mich, selbst nach eurem einsatz der sehr lobenswert ist, immer noch net schlauer fühle... |
Re: Procedure als Event definieren? Wenn ja, wie?
Delphi-Quellcode:
Du musst also eine Methode zuweisen (of object)
type TDataSetNotifyEvent = procedure(
DataSet: TDataSet ) of object; => Dummy Klassse erstellen, mit einer Methode und zuweisen (bei der Zuweisung keine Parameter!) Alternativ gibt es auch einen kleinen Hack, der es ermöglicht eine Prozedur als Event zu verpacken und dann zuzuweisen, da muss ich nochmal kurz gucken ... ich glaub das war von himi Doch nicht himi sondern Mirage: ![]() |
Re: Procedure als Event definieren? Wenn ja, wie?
komm ich mir nur dumm vor oder bin ich es?
Delphi-Quellcode:
ergeben noch immer den selben fehler -.-
type
TDummeKlasse = Class(TObject) Procedure BeforeInsert(DataSet: TDataSet); End; [...] command.BeforeInsert := TDummeklasse.BeforeInsert; // oder command.BeforeInsert := BeforeInsert; ich versteh glaube echt nicht was ihr mir hier erklären wollt... |
Re: Procedure als Event definieren? Wenn ja, wie?
Delphi-Quellcode:
type
TDummyKlasse = Class(TObject) Procedure BeforeInsert(DataSet: TDataSet); End; [...] var temp = TDummyKlasse.Create(); command.BeforeInsert := temp.BeforeInsert; // ggf. absichtliches Speicherleck |
Re: Procedure als Event definieren? Wenn ja, wie?
Oder so...
Delphi-Quellcode:
type
TDummy = class class procedure BeforeInsert(DataSet:TDataSet); end; { TDummy } class procedure TDummy.BeforeInsert(DataSet: TDataSet); begin end; : : begin command.BeforeInsert:=TDummy.BeforeInsert; end; |
Re: Procedure als Event definieren? Wenn ja, wie?
Zitat:
Delphi-Quellcode:
irgendwie springt er trotzdem nicht in das sch**ß event rein :-(
type
TDummeKlasse = Class(TObject) Procedure BeforeInsert(DataSet: TDataSet); End; --- procedure TDummeKlasse.BeforeInsert(DataSet: TDataSet); begin Showmessage(Command.SQL.Text); end; --- function GlobalInit : Boolean; var X : TDummeKlasse; begin result := false; X := TDummeKlasse.create; [...] command.BeforeInsert := X.BeforeInsert; [...] end; Was mach ich noch alles falsch?! |
Re: Procedure als Event definieren? Wenn ja, wie?
Zitat:
und ja, ein paar Mal hatte ich es auch erwähnt. Aber es hatt seinen Grund, warum ich (und auch Andere) hier mehrmals den offiziellen Weg und nicht den Hack erwähnte. Zitat:
Und den anderen Trick, der mit dem NIL-Objekt, erwähn ich besser auch nicht. So, das was jfheins schieb, hatten wir jetzt mehrmals beschrieben ... was ist daran also bitte so schwer, daß man es nicht versteht? Zitat:
Du gibst X aber nicht zu früh frei? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 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