![]() |
Prozedur (mit Parametern) an eine Funktion übergeben
Hi.
Ich habe ein Programm geschrieben, in dem man des öfteren Buttons eines MessageDlg's klicken muss. Drückt man dort auf Cancel, so wird wird in einem neuem MessageDlg abgefragt, ob der Vorgang wirklich abgebrochen werden soll. Das sieht dann z.B. wie folgt aus:
Delphi-Quellcode:
Nun das eigentliche Problem: Ich würde die Abfrage gerne in einer function auslagern. An diese function sollte aber auch die procedure übergeben werden können, die oben in der markierten zeile steht, aus dem Grund, da es bei jeder Abfrage eine andere, oder zumindest mit verschiedenen Parametern ist.
if MessageDlg('Willst du die Raterunde wirklich abbrechen?', mtCustom, mbYesNoCancel, 0) = mrYes then
begin mmAusgabe.Lines.Add('Raterunde abgebrochen.'); exit; end else begin fragesitzung(baum); <-- exit; end; Nun - ist dies möglich, und wenn ja, wie? Schonmal danke - Timo. |
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Ich würde da nichts auslagern, denn dadurch gewinnst du nichts.
Kleiner Tipp: Nimm keine hardgecodeten Strings. Wenn du da mal was ändern willst, bist du nur am Suchen. |
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Nunja, übersichtlicher würds schon werden... aber mal abgesehen davon, gibt es nun einen Weg eine procedure (mit unbekannten parametern) zu übergeben?
Und noch eine Frage: was bedeutet 'hardgecodeter string'? Mfg, Timo. |
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Zitat:
Hardgecodete Strings sind einfach alles, was du per '' machst aber nicht in einer Variablen auslegst. Wenn du z.b. die selbe zeichenkette (für Abfragen) mehrmals verwendest, solltest du sie auslagern in eine Variable, da wenn du mal etwas ändern willst, müsstest du es überall ändern. So musst du es nur in der Variablen ändern air |
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Hi.
Zitat:
|
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Zitat:
|
Re: Prozedur (mit Parametern) an eine Funktion übergeben
OH-Lesen bildet! Die ganzen Notification-Routinen der VCL sind sowas was du willst. Alternativ schreibst du dir deine eigene Funktion und deklarierst dafür einen Typen ala:
Delphi-Quellcode:
Diesen Typen kannst du dann in einer Parameterliste für eine andere Funktion angeben und so die Funktion als Callback-Funktion an eine andere übergeben. Achtung: in Callbacks keine lokalen Funktionen deklarieren!
type TFNBla = function(Parameter1:BlaTyp; Parameter2:BlaTyp2):RueckgabeTyp; Aufrufkonvention;
|
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Erstmal danke für die Antworten.
Die typ-deklaration einer Funktion war mir auch bereits bekannt, jedoch dachte ich, dass es auch ohne geht. Denn ich wollte es vermeiden, mehrere Typen, je nach aufzurufender Prozedur, zu deklarieren. Nunja, ich hatte auf eine einfache Lösung gehofft, schade dass dem nicht so ist... Mfg, Timo. |
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Statt des obigen Typen kannst du auch einen untypisierten Pointer übergeben. Jedoch mußt du zum Aufruf der Funktion den Pointer in den Funktionstypen typecasten. Wie soll denn der Compiler sonst wissen, wie die Parameter zu übergeben sind?!
|
Re: Prozedur (mit Parametern) an eine Funktion übergeben
Hi,
Zitat:
![]() ![]() Gruß Stephan :dance: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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