![]() |
Re: Prozedur aufrufen
Moin HBoy,
was gefällt Dir denn an Tryers bzw. Maximovs Variante nicht? Funktioniert doch. |
Re: Prozedur aufrufen
ich will die parameter allgemein halten. Deswegen kann ich keine Typen definiern
|
Re: Prozedur aufrufen
Moin HBoy,
dann schau Dir mal in der Hilfe "Variante offene Array-Parameter" an, falls die Parameter einen unterschiedlichen Typ haben können, oder aber "Offene Array-Parameter" falls der Typ immer gleich ist. |
Re: Prozedur aufrufen
Danke für deine Antwort aber das ist nicht mehr das Problem. mittlerweile kann ich die parameter in einer array vom typ TVarRec ( ja glaub so hießt der ) speichern. Das ist der Typ den Delphi für Const einsetzt. Array of const = array of TVarRec.
Mein problem ist jetzt nur wie ich die Prozedur aufrufen kann und ihr die Array übergeb. Kann ich vielleicht einen Prozedurtyp procedure fitsall( Array of TVarRec) of object bauen ? |
Re: Prozedur aufrufen
Ich hab das jetzt so:
Delphi-Quellcode:
allerdings bekomme ich die Parameter nicht korrekt zurück. Geladen werden sie so:
type UniProc = procedure(const params: Array of const );
procedure CallProc( procptr: Pointer; const paramlist: Array of const); var x: UniProc; begin x := procptr; x(paramlist); end;
Delphi-Quellcode:
procedure SetTimeout(proc: Pointer;const params: Array of const; msecs: longword);
var i: integer; begin setlength(jobs,length(jobs)+1); jobs[high(jobs)].proc := proc; setlength(jobs[high(jobs)].params,length(params)); for i :=0 to high(params) do begin jobs[high(jobs)].params[i] := params[i]; end; jobs[high(jobs)].launchtime := gettickcount+msecs; end; |
Re: Prozedur aufrufen
Weiß jemand wieso das nicht tut ?
|
Re: Prozedur aufrufen
kleines Textbeispiel:
procedure setformtitle(x: integer); begin form1.caption := inttostr(x); end; procedure TForm1.Button1Click(Sender: TObject); begin SetTimeout(@setformtitle,[23],1000); end; damit müsste nach 1 sekunde "23" dranstehn, anstelle dessen kommt aber 23409217 oder eine anderer nicht initialisierter Wert Jemand ne Ahnung warum ? muss ich für den typ TVarRec erst den Speicher reservieren ? |
Re: Prozedur aufrufen
*nochmal auf mein problem hinweis* weißes niemand ?
|
Re: Prozedur aufrufen
Moin hboy,
wie sieht die Deklaration von "Jobs" aus? |
Re: Prozedur aufrufen
Delphi-Quellcode:
könnte vielleicht an der dny. Array liegen
type queuejob = record
proc: Pointer; params: Array of TVarRec; launchtime: longword; processed: boolean; end; var obj: TTimeout; jobs: Array of queuejob; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 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