Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Case Probleme (https://www.delphipraxis.net/103275-case-probleme.html)

Andidreas 13. Nov 2007 16:53


Case Probleme
 
aloha,

mit der case funktion bin ich noch nicht so bewandert...
kann sein das ich hier eine anfänger frage stelle, aber ich weiß grad leider nicht wo mein problem ist...

hier wäre mal mein case block

Delphi-Quellcode:
  Case strgrid_interfaceval.Cells[2, 1] of
    'ZDL1;' : lbl_carrier.Caption := 'Sped1';
    'ZDP3;' : lbl_carrier.Caption := 'Sped2';
    'ZDU1;' : lbl_carrier.Caption := 'Sped3';
    'ZDG1;' : lbl_carrier.Caption := 'Sped4;
    'ZDG2;' : lbl_carrier.Caption := 'Sped5';
    'ZDG3;' : lbl_carrier.Caption := 'Sped6';
  End;
der inhalt von strgrid_interfaceval.Cells[2, 1] müsste ja vom typ string sein...
beim compelieren erhalt ich aber jetzt die fehlermeldung "Inkompatible Typen 'Integer' und 'string'"
weiß jemand woran das liegt???

Bernhard Geyer 13. Nov 2007 16:55

Re: Case Probleme
 
Zitat:

Zitat von Andidreas
weiß jemand woran das liegt???

Unter Delphi.Win32 werden keine Strings als Case-Labels unterstützt. Evtl. in Delphi 2008.

Apollonius 13. Nov 2007 16:56

Re: Case Probleme
 
Case kann nur mit ordinalen Typen verwendet werden, insbesondere funktionieren also reelle Typen, Mengen und Strings nicht. Du kannst höchstens AnsiIndexText verwenden.

Klaus01 13. Nov 2007 17:57

Re: Case Probleme
 
Guten Abend Andreas,

vielleicht hilft Dir dieser Thread (case string) weiter?

Grüße
Klaus

Reinhard Kern 13. Nov 2007 18:08

Re: Case Probleme
 
Zitat:

Zitat von Andidreas
aloha,

mit der case funktion bin ich noch nicht so bewandert...
kann sein das ich hier eine anfänger frage stelle, aber ich weiß grad leider nicht wo mein problem ist...

hier wäre mal mein case block

Delphi-Quellcode:
  Case strgrid_interfaceval.Cells[2, 1] of
    'ZDL1;' : lbl_carrier.Caption := 'Sped1';
    'ZDP3;' : lbl_carrier.Caption := 'Sped2';
    'ZDU1;' : lbl_carrier.Caption := 'Sped3';
    'ZDG1;' : lbl_carrier.Caption := 'Sped4;
    'ZDG2;' : lbl_carrier.Caption := 'Sped5';
    'ZDG3;' : lbl_carrier.Caption := 'Sped6';
  End;
der inhalt von strgrid_interfaceval.Cells[2, 1] müsste ja vom typ string sein...
beim compelieren erhalt ich aber jetzt die fehlermeldung "Inkompatible Typen 'Integer' und 'string'"
weiß jemand woran das liegt???

Wie schon erklärt, keine Strings. Wenn es so aussieht wie oben, könntest du aber in Ordinalzahlen umwandeln:

Delphi-Quellcode:
type TCellword : case boolean of
                   false : (W : word);
                   true : (Hi,Lo : Byte);
                 end;
  {...}
var Cellword : TCellword;
  {...}
Cellword.Hi := ord (strgrid_interfaceval.Cells[2, 1][3]);
Cellword.LO := ord (strgrid_interfaceval.Cells[2, 1][4]);
 Case Cellword.W of
  {...}
  { NOT tested! }
Da die Labels bei Case Konstanten sein müssen, must du sie wohl mit dem Taschenrechner ausrechnen - Delphi hat keine Macros für Preprozessor. (Kommentar zufügen, damit man weiss, welcher Text gemeint ist).

Ich würde aber einfach eine Reihe if-Statements hintereinander nehmen, ist besser lesbar.

Gruss Reinhard

Klaus01 14. Nov 2007 09:14

Re: Case Probleme
 
Guten Morgen Andreas,

das Problem kannst Du auch mit AnsiIndexStr angehen.

http://www.delphipraxis.net/internal...hp?p=4083#4083
http://www.delphipraxis.net/internal...t=ansiindexstr

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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