Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ereignisprozedur zur Laufzeit zu weisen (https://www.delphipraxis.net/155319-ereignisprozedur-zur-laufzeit-zu-weisen.html)

Samashy 18. Okt 2010 15:09

Delphi-Version: 2007

Ereignisprozedur zur Laufzeit zu weisen
 
Hallo Ihr Lieben,

ich hänge an folgendem Problem fest.
Ich möchte eine Komponente zur Laufzeit erzeugen und dann eine Ereignisprozedur zu weisen:

Code:
type
  TForm1 = class(TForm)
      Memo1: TMemo;
      procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
     testrio : THTTPRIO;
     procedure testrioBeforeExecute(const MethodName: string;
      var SOAPRequest: TStream);
  public
    { Public-Deklarationen }
  end;
Code:
procedure TForm1.testrioBeforeExecute(const MethodName: string;
  var SOAPRequest: TStream);
var
 Request: UTF8String;
begin
  SetLength(Request, SOAPRequest.Size);
  SOAPRequest.Position := 0;
  SOAPRequest.Read(Request[1], Length(Request));
  Memo1.Lines.Add(FormatXMLData(Request));
end;

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
   testrio :=THTTPRIO.create(Application);
   testrio.OnBeforeExecute:=testrioBeforeExecute;   //<---- Hier bekomme ich den Fehler
end;
Die Fehlermeldung: Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'

Was mache ich falsch?

Luckie 18. Okt 2010 15:11

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Na dann guck dir doch mal an, was für Parameter die Prozedur erwartet. Das weiß ich auch nicht, da müsste ich genauso in der Hilfe nachgucken, wie du.

himitsu 18. Okt 2010 15:14

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Zitat:

Delphi-Quellcode:
{$IFDEF OLD_STYLE_ON_BEFORE_EXECUTE}
  TBeforeExecuteEvent = procedure(const MethodName: string; var SOAPRequest: InvString) of object;
{$ELSE}
  TBeforeExecuteEvent = procedure(const MethodName: string; SOAPRequest: TStream) of object;
{$ENDIF}

Ich vermute mal das Neue ist aktiv ... aber da gibt es kein VAR beim Stream :zwinker:

PS: Wozu in die OH gucken?
Die stimmt doch eh nicht immer.
Aktueller und richtig wird der Quellcode sein.
> Strg+Mauslinksklick auf ".OnBeforeExecute" und schon siehst du, was verlangt wird.

Luckie 18. Okt 2010 15:30

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Zitat:

Zitat von himitsu (Beitrag 1056344)
PS: Wozu in die OH gucken?
Die stimmt doch eh nicht immer.
Aktueller und richtig wird der Quellcode sein.
> Strg+Mauslinksklick auf ".OnBeforeExecute" und schon siehst du, was verlangt wird.

Das war nur ein Hinweis, dass man da auch mal selber gucken kann.

Sir Rufo 18. Okt 2010 15:41

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Zumal die OH in diesem Fall ja auch stimmt
http://docs.embarcadero.com/products...cuteEvent.html

Wenn das dann immer noch nicht passt schaut man (wie gezeigt) in den Quelltext.

Samashy 18. Okt 2010 15:49

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Vielen Dank!!! Jetzt funktioniert es! Das var war es :-D

Sam

himitsu 18. Okt 2010 15:53

AW: Ereignisprozedur zur Laufzeit zu weisen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Luckie (Beitrag 1056346)
Das war nur ein Hinweis, dass man da auch mal selber gucken kann.

Ist auch richtig, aber leider enthält die OH nicht immer viele Infos, wenn überhaupt. :cry: (Unbenannt.PNG)
Da geht es über den Typen selber schneller.

Leider bekommt man das letzte D2010er Help-Update hier nicht installiert (ein Installerproblemchen), aber eventuell hat man es ja auch erst in XE aktualisiert.
Aber derzeit finde ich die OH diesbezüglich nicht grad informativ. :roll:
Dazumal F1 über "OnBeforeExecute" nichts oder was Falsches findet,
auf "TBeforeExecuteEvent" muß man auch erstmal kommen
und selbst da zeigt die OH nichtmal den Eintrag direkt an (Unbenannt2.PNG) und man muß selber weiterklicken.

Und jetzt darf ich auch nicht vergessen diese blöde dexplorer.exe abzuschießen, da sonst der PC nicht mehr runterfährt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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