Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionszeiger (https://www.delphipraxis.net/127304-funktionszeiger.html)

asusbob 10. Jan 2009 21:02


Funktionszeiger
 
Hmm, ich hab wieder gesucht und nichts richtiges gefunden... Wie implementiere ich in Delphi Funktionszeiger? Habt ihr da vllt nen Beispiel, die Typdefinition hab ich, aber wie gehts jetzt genau weiter?

Delphi-Quellcode:
    TMathFunc = Function(l : TExerciseInfoList; Excluded : TExcluded) : Currency;
Danke schonmal :)

Apollonius 10. Jan 2009 21:12

Re: Funktionszeiger
 
Das hängt davon ab, was du tun willst. Normalerweise verwendest du diesen Typen jetzt für die Deklaration von Parametern (wenn du Callbacks verwenden willst) oder von Feldern und Eigenschaften (für Events).

asusbob 10. Jan 2009 21:18

Re: Funktionszeiger
 
also ich habe ein Codestücke was wirklich oft 8 mal glaub ich insg. redundant ist und sich nur in einer zeile, einem funktionsaufruf unterscheidet....

also so weit bin ich, die funktion wird aufgerufen allerdings geht der rückgabewert verloren Oo

Typdefinition
Delphi-Quellcode:
TMathFunc = Function(l : TExerciseInfoList; Excluded : TExcluded) : Currency;
Funktion
Delphi-Quellcode:
  function getAnyAll(f : TMathFunc) : Currency;
    var i, j : Word;
        res : Currency;
  begin
    i := 0; j := 0;
    RESULT := 0;

    for i := low(esRelevant) to high(esRelevant) do
      if esRelevant[i] then
      begin
        res := f(earTimes[i], exExcluded);

        if res <> 0 then
        begin
          RESULT := RESULT + res;
          inc(j);
        end;
      end;


    if (j = 0) then
      RESULT := 0
    else
      RESULT := RESULT / j;
  end;
Aufruf
Delphi-Quellcode:
sgDetailView.Cells[sgDetailView.ColCount - 1,1] := myFlToStr(getAnyAll(@getAvailableDataSets));
Keine Fehlermeldung kein nichts... "getAvailableDataSets" gibt den richtigen Wert zurück, getAny hat dann aber nen ganz anderen wert Oo.

asusbob 10. Jan 2009 21:25

Re: Funktionszeiger
 
Fehler gefunden... alles Richtig... Currency und Word sollte man nicht vermischen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.

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