![]() |
abfrage ohne if und case
hi!
ich wollt nur mal kurz fragen: nachdem ich versucht habe, eine 'Abfrage' ohne if und case zu machen, hab ich mir folgendes überlegt:
Delphi-Quellcode:
Aber beim aufrufen gibts ein problem:
var
procs: array[0..1] of pointer; procedure a; begin ... end; procedure b; begin ... end; procedure Main; begin procs[0] := @b; procs[1] := @a; ... //Statt folgendem: if s=m then a else b; //Das schreiben: procs[ord(s=m)]; end; Zitat:
|
Re: abfrage ohne if und case
Ichh habe jetzt keine Zeit, dass rauszusuchen, aber einen Tipp kann ich Dir schon mal geben.
Einen Pointer kannst Du nie direkt aufrufen. Du musst dazu schon den Typ sagen. Definiere doch einfach einen Typ:
Delphi-Quellcode:
Wenn Du nun TSimpleProc nutzt, solltest Du weiter kommen. Woher soll Delphi denn auch wissen, was der Pointer für eine Funktion oder Procedure ist...
type TSimpleProc = procedure;
|
Re: abfrage ohne if und case
Nun habe ich doch noch nachgeschaut und das wesentlich rauskopiert:
Delphi-Quellcode:
Ist zwar jetzt mit Case, aber da sollte auch ein Array realisierbar sein. GetWerte_Zug_Stahlbruch, ... sind die Funktionen, die von den Parametern t_GetTabellenWert entsprechen.
type
t_GetTabellenWert = FUNCTION (Lastfall: t_Lastfall; LineCount: Integer; VAR Werte: t_ARRAYLastkombination; VAR Einheit: String; VAR VorwertGrafik: String; VAR GrafikFile: String): Boolean; ... var GetTabellenWert : t_GetTabellenWert; begin ... CASE Nachweistyp OF ntZug_Stahlbruch : GetTabellenWert := GetWerte_Zug_Stahlbruch; ntZug_Betonausbruch : GetTabellenWert := GetWerte_Zug_Betonausbruch; ntZug_Herausziehen : GetTabellenWert := GetWerte_Zug_Herausziehen; ntZug_Spalten : GetTabellenWert := GetWerte_Zug_Spalten; ntZug_Druckkraft : GetTabellenWert := GetWerte_Zug_Druckkraft; ntQuer_Stahlbruch : GetTabellenWert := GetWerte_Quer_Stahlbruch; ntQuer_Kantenbruch : GetTabellenWert := GetWerte_Quer_Kantenbruch; ntQuer_Betonausbruch : GetTabellenWert := GetWerte_Quer_Betonausbruch; ntQuer_Herausziehen : GetTabellenWert := GetWerte_Quer_Herausziehen; ntBiegung : GetTabellenWert := GetWerte_Biegung; END; ... end; |
Re: abfrage ohne if und case
ok, super! Danke! klappt!
:dancer2: :dancer2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 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