Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prozedur aufrufen (https://www.delphipraxis.net/20327-prozedur-aufrufen.html)

Christian Seehase 18. Apr 2004 12:44

Re: Prozedur aufrufen
 
Moin HBoy,

was gefällt Dir denn an Tryers bzw. Maximovs Variante nicht?
Funktioniert doch.

hboy 18. Apr 2004 12:54

Re: Prozedur aufrufen
 
ich will die parameter allgemein halten. Deswegen kann ich keine Typen definiern

Christian Seehase 18. Apr 2004 13:01

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.

hboy 18. Apr 2004 13:07

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 ?

hboy 19. Apr 2004 18:28

Re: Prozedur aufrufen
 
Ich hab das jetzt so:


Delphi-Quellcode:
  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;
allerdings bekomme ich die Parameter nicht korrekt zurück. Geladen werden sie so:

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;

hboy 19. Apr 2004 18:34

Re: Prozedur aufrufen
 
Weiß jemand wieso das nicht tut ?

hboy 19. Apr 2004 18:45

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 ?

hboy 20. Apr 2004 20:38

Re: Prozedur aufrufen
 
*nochmal auf mein problem hinweis* weißes niemand ?

Christian Seehase 20. Apr 2004 21:11

Re: Prozedur aufrufen
 
Moin hboy,

wie sieht die Deklaration von "Jobs" aus?

hboy 20. Apr 2004 22:37

Re: Prozedur aufrufen
 
Delphi-Quellcode:
  type queuejob = record
    proc: Pointer;
    params: Array of TVarRec;
    launchtime: longword;
    processed: boolean;
  end;

  var
    obj: TTimeout;
    jobs: Array of queuejob;
könnte vielleicht an der dny. Array liegen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.
Seite 2 von 3     12 3      

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