![]() |
Delphi-Version: XE2
Liste von Prozeduren als Thread starten
Hallo,
Angenommen ich habe ein Array von Prozedurnamen
Delphi-Quellcode:
Gibt es eine einfache Möglichkeit dieses Array mit einer for-Schleife zu durchlaufen, um alle Prozeduren in einem Thread zu starten?
var a:array[0..2] of string = ('f1', 'f2', 'f3');
procedure f1(p:pointer); begin end; ... Ungefähr so:
Delphi-Quellcode:
for i := low(a) to high(a) do beginthread(nil, 0, @a[i], nil, 0, c);
|
AW: Liste von Prozeduren als Thread starten
Eine einfache Möglichkeit gibt es nicht, weil Delphi von einem String nicht auf die Adresse einer Funktion schliesen kann.
Man benötigt schon etwas mehr Aufwand als bei dynamischen Scriptsprachen.
Delphi-Quellcode:
Aber sag mal wozu brauchst du dass denn?
type
TMyFunc = procedure(p:Pointer); TMyFuncRec = record name:string; func:TMyFunc end; const funclist = array[0..1] of TMyFuncRec = ((name:'f1'; func:@f1), ((name:'f2'; func:@f2)); Willst du dir einen eigenen ![]() |
AW: Liste von Prozeduren als Thread starten
Nein.
Die Namen der Funktionen sind i.d.R. nicht mehr im Compilat enthalten. Debuginfos oder RTTI (bei Klassen) könnten da sein, aber eine schöne Lösung ist das nicht ;-) Für so etwas würde ich eine List<TThread> (oder sowas in der Richtung) hernehmen, da wäre das dann überhaupt kein Problem... |
AW: Liste von Prozeduren als Thread starten
Danke, ich werde es so wie sx2008 vorgeschlagen hat, probieren.
Nein, nicht für einen ThreadPool, ich wollte meinen Code damit nur etwas dynamischer machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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