Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Function Pointer in Array?

  Alt 19. Okt 2010, 12:52
passt nicht ganz für Deine Anfrage, ich habe eine meine ich ähnliches Problem folgendermassen gelöst, nur Auzüge aus dem Code....
Delphi-Quellcode:
Type
  TKapaBlockSetter= procedure(const Value: Double) of Object;
end;

C_QueryKinds : Array [0..11] of String=('Retrostd. Vergangenheit','Echtaufträge','Rückstand','Planaufträge','Planaufträge verkauft'
                                       ,'ET/Umbau'
                                       ,'IST-Zeiten'
                                       ,'Angebot lt. Meisterliste'
                                       ,'Angebot durchschnittlich'
                                       ,'GK-Stunden'
                                       ,'Echtaufträge verg.'
                                       ,'GK-Stunden verg');
C_Setters : Array [0..11] of TMethod=((code:@TKapaAuswertung.SetRetroStdVerg;data:nil),
                                         (code:@TKapaAuswertung.SetEchtAuftr;data:nil),
                                         (code:@TKapaAuswertung.SetRueckVerteilt;data:nil),
                                         (code:@TKapaAuswertung.SetPlanAuftr;data:nil),
                                         (code:@TKapaAuswertung.SetPlanAuftrVerk;data:nil),
                                         (code:@TKapaAuswertung.SetETUmbau;data:nil), (code:@TKapaAuswertung.SetISTAnwesenheit;data:nil), (code:@TKapaAuswertung.SetAngebLtMeister;data:nil),
                                         (code:@TKapaAuswertung.SetAngebAVG;data:nil),
                                         (code:@TKapaAuswertung.SetGK_Stunden;data:nil),
                                         (code:@TKapaAuswertung.SetEchtAuftrverg;data:nil),
                                         (code:@TKapaAuswertung.SetGK_StundenVerg;data:nil)
                                         );


//im Code dann:
var
setter:TKapaBlockSetter;
begin
...
...
  For i := Low(C_QueryKinds) to High(C_QueryKinds) do
    begin
          GetHelpQuery(Ads,'[P_GetKapaNeu]' + QuotedStr( C_QueryKinds[i])..............

          TMethod(Setter).code := C_Setters[i].code;
          TMethod(Setter).data := FKapaAuswertung;
          Setter( Ads.Fields[1].AsFloat);
    end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat