AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

abfrage ohne if und case

Ein Thema von Illuminator-23-5 · begonnen am 19. Sep 2003 · letzter Beitrag vom 19. Sep 2003
Antwort Antwort
Illuminator-23-5
(Gast)

n/a Beiträge
 
#1

abfrage ohne if und case

  Alt 19. Sep 2003, 14:01
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:
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;
Aber beim aufrufen gibts ein problem:
Zitat von Delphi-Compiler:
Statement expected, but expression of typr 'Pointer' found
Warum geht das nicht?
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: abfrage ohne if und case

  Alt 19. Sep 2003, 14:45
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:
type TSimpleProc = procedure; 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...
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: abfrage ohne if und case

  Alt 19. Sep 2003, 14:51
Nun habe ich doch noch nachgeschaut und das wesentlich rauskopiert:
Delphi-Quellcode:
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;
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.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#4

Re: abfrage ohne if und case

  Alt 19. Sep 2003, 15:03
ok, super! Danke! klappt!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 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