![]() |
Konzeptfrage zu Problem Methodenzeiger vs. reguläre Procedur
Hallo und guten Tag an alle DP´ler,
Wollte mal eine Frage stellen zu einem Eventhandling, was ich probiert habe, welches aber so anscheinend (noch) nicht funktioniert. Ich wollte in einer Procedure einen Thread öffnen, diesen abarbeiten und dann über ein Event schließen. Da dies nirgendswo anders benötigt wird, habe ich mal folgende Struktur ausprobiert:
Delphi-Quellcode:
Ich weiß, wenn ich die GetMesswertList in die Funktionsliste der TForm2 aufnehme, bekomme ich das ohne Probleme hin, wollte es aber in sich verschachteln, da die GetMesswertList-Procedure eh nirgendswo anders Verwendung findet. Kann man das in irgendeiner Form so zum Laufen bringen (derzeit bekomme ich immer Fehlermeldung, wegen regulärer Funktion und Methodenzeiger)?
procedure TForm2.Messung(iMessreihen, iMesswerte, iMessabstand: Integer);
var TempList: TMesswertpacket; procedure GetMesswertList(Sender: TObject; List: TStringList); begin try TempList.FsLMesswertListe.Assign(List); finally FMessThread.Free; end; end; begin // in der Messung sollen iMessreihen * iMesswerte an Messpunkten aufgenommen, um // diese später statistisch auszuwerten. // Dafür Mesthread erstellen, der in regelmäßigen Abständen die entsprechende Anzahl // an Messwerten aufnimmt. FMessThread := TMessThread.create((iMessreihen * iMesswerte), iMessabstand); try FMessThread.OnMessWertListcompleted := GetMessWertList; FMessThread.WaitFor; TempList.Messwertreihen := iMessreihen; TempList.Messwertanzahl := iMesswerte; // weitere Aufrufe, die die TempList an eine andere Funktion schicken except FMessThread.Free; end; end; Vielen Dank im Voraus BAMatze Ps.: das Event wird erst nach einem Schleifenaufruf (for-Schleife) und somit nach Ermittlung ALLER Messwerte ausgelöst. |
Re: Konzeptfrage zu Problem Methodenzeiger vs. reguläre Proc
Rufe die Prozedur/Funktion in der Methode auf
|
Re: Konzeptfrage zu Problem Methodenzeiger vs. reguläre Proc
Zitat:
|
Re: Konzeptfrage zu Problem Methodenzeiger vs. reguläre Proc
Ich würde bezweifeln, dass es irgendwie geht eine nested function so aufzurufen. Wie soll er aus der nested function dann die lokale Variable Templist finden. Er weiß doch gar nicht, wo er sich gerade im Stack befindet.
Edit: Ja Wahnsinn. Bei D7 geht das sogar durch den Compiler. Liefert aber, wie erwartet, totalen Unfug. Na den kann man ja lange suchen.
Delphi-Quellcode:
type TProc=procedure;
procedure Foo(proc:TProc); var s:String; begin s:='Test'; //nur damit der Stack auch etwas "durcheinander" kommt. Proc; showmessage(s); //..und damit die CodeOptimierung mir das s nicht rausschmeißt end; procedure TForm1.Button1Click(Sender: TObject); var x:Integer; procedure test; begin showmessage(inttostr(x)); end; begin x:=5; test; Foo(@test); end; |
Re: Konzeptfrage zu Problem Methodenzeiger vs. reguläre Proc
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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