AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionen in Array

Ein Thema von zeras · begonnen am 13. Okt 2019 · letzter Beitrag vom 18. Nov 2019
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#1

AW: Funktionen in Array

  Alt 13. Okt 2019, 19:21
Danke, das werde ich dieser Tage mal probieren.
Sieht aber so aus, dass ich es nutzen kann.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#2

AW: Funktionen in Array

  Alt 14. Okt 2019, 12:33
Die Statemachine mit Funktionen, s.u., ist dafür zu gebrauchen,
oder besser gleich eine State-Machine-Klasse,
z.B. die hier
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Funktionen in Array

  Alt 14. Okt 2019, 14:58
Wo siehst du hier States? Für mich riecht das eher nach "pipes and filters".
Das von samso scheint mir als erstes der richtige Ansatz zu sein.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#4

AW: Funktionen in Array

  Alt 17. Nov 2019, 15:44
Ich habe nun die Idee von Samso übernommen, aber festgestellt, dass ich durch Erweiterungen des Programms nun auch Parameter an die Funktionen übergeben muss.

Delphi-Quellcode:
function A(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;
begin
  Result := True;
end;

function B(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;
begin
  Result := True;
end;


type
  TMyFunction = function(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;

var
  Steps: array of TMyFunction;
  Step: Integer;
  res: Integer;

begin
  SetLength(Steps, 2);
  Steps[0] := A; <-- wie muss ich die Funktion hier schreiben, da sie Parameter hat?
  Steps[1] := B;

  for Step := 0 to High(Steps) do
    res := Steps[Step];

end.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.687 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Funktionen in Array

  Alt 17. Nov 2019, 15:49
Ich habe nun die Idee von Samso übernommen, aber festgestellt, dass ich durch Erweiterungen des Programms nun auch Parameter an die Funktionen übergeben muss.

Delphi-Quellcode:
function A(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;
begin
  Result := True;
end;

function B(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;
begin
  Result := True;
end;


type
  TMyFunction = function(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean;

var
  Steps: array of TMyFunction;
  Step: Integer;
  res: Integer;

begin
  SetLength(Steps, 2);
  Steps[0] := A; <-- wie muss ich die Funktion hier schreiben, da sie Parameter hat?
  Steps[1] := B;

  for Step := 0 to High(Steps) do
    res := Steps[Step];

end.
Die Parameter musst Du erste beim Aufruf übergeben:

Delphi-Quellcode:
  for Step := 0 to High(Steps) do
    res := Steps[Step](x1,x2,x3,x4,x5);
Thomas Mueller
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#6

AW: Funktionen in Array

  Alt 17. Nov 2019, 16:13
Danke Thomas,

im Beispiel oben (Konsolenprogramm) und den Infos von dir geht es, in meiner Umgebung bekomme ich den Fehler
E2009: Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'.

Ich muss mal sehen, was in meinem Programm anders ist, als im Beispielprojekt.

Irgendwie hängt das mit den Funktionen zusammen, da diese noch im private Abschnitt deklariert sind, weil das alles im einem Thread läuft und ich Synchronize benutzen muss.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (17. Nov 2019 um 16:33 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.687 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Funktionen in Array

  Alt 17. Nov 2019, 17:38
im Beispiel oben (Konsolenprogramm) und den Infos von dir geht es, in meiner Umgebung bekomme ich den Fehler
E2009: Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'.
In Deinem Programm sind vermutlich die Funktionen Methoden eines Objekts, dann musst Du die folgende Deklaration ändern:

Delphi-Quellcode:
type
  TMyFunction = function(var x1: String; x2: integer; x3: String; x4: String; var x5: String): Boolean of object;
Thomas Mueller
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Funktionen in Array

  Alt 18. Nov 2019, 07:52
Oder vielleicht "TMyFunction = function" -> "TMyFunction = reference to function". Dann ist es egal.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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