Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur (mit Parametern) an eine Funktion übergeben (https://www.delphipraxis.net/45278-prozedur-mit-parametern-eine-funktion-uebergeben.html)

omiT 3. Mai 2005 13:55


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:
      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 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.

Nun - ist dies möglich, und wenn ja, wie?

Schonmal danke - Timo.

Luckie 3. Mai 2005 13:59

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.

omiT 3. Mai 2005 15:09

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.

Airblader 3. Mai 2005 15:19

Re: Prozedur (mit Parametern) an eine Funktion übergeben
 
Zitat:

Zitat von omiT
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.

Man kann ein array von Parametern übergeben, als Beispiel.

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

Waldteufel 3. Mai 2005 15:19

Re: Prozedur (mit Parametern) an eine Funktion übergeben
 
Hi.

Zitat:

Zitat von omiT
Und noch eine Frage: was bedeutet 'hardgecodeter string'?

Ein String, der direkt in der Exe-Datei steht.

malo 3. Mai 2005 15:24

Re: Prozedur (mit Parametern) an eine Funktion übergeben
 
Zitat:

Zitat von Airblader
Zitat:

Zitat von omiT
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.

Man kann ein array von Parametern übergeben, als Beispiel.

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

Nimm lieber Konstanten. Dafür sind die ja da ;)

Mephistopheles 3. Mai 2005 15:31

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:
type TFNBla = function(Parameter1:BlaTyp; Parameter2:BlaTyp2):RueckgabeTyp; Aufrufkonvention;
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!

omiT 3. Mai 2005 20:44

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.

Mephistopheles 3. Mai 2005 20:50

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?!

Steve 4. Mai 2005 08:14

Re: Prozedur (mit Parametern) an eine Funktion übergeben
 
Hi,
Zitat:

Zitat von omiT
An diese function sollte aber auch die procedure übergeben werden können, ... aus dem Grund, da es bei jeder Abfrage eine andere, oder zumindest mit verschiedenen Parametern ist.

Solange es nur um andere Parameter geht, kannste evtl. Deine Prozedur auch überladen [oh]Methoden überladen[/oh], Delphi-Referenz durchsuchenoverload, Delphi-Referenz durchsuchenreintroduce

Gruß
Stephan :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz