AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Case Probleme

Ein Thema von Andidreas · begonnen am 13. Nov 2007 · letzter Beitrag vom 14. Nov 2007
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Case Probleme

  Alt 13. Nov 2007, 17:53
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???
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Case Probleme

  Alt 13. Nov 2007, 17:55
Zitat von Andidreas:
weiß jemand woran das liegt???
Unter Delphi.Win32 werden keine Strings als Case-Labels unterstützt. Evtl. in Delphi 2008.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Case Probleme

  Alt 13. Nov 2007, 17:56
Case kann nur mit ordinalen Typen verwendet werden, insbesondere funktionieren also reelle Typen, Mengen und Strings nicht. Du kannst höchstens AnsiIndexText verwenden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Case Probleme

  Alt 13. Nov 2007, 18:57
Guten Abend Andreas,

vielleicht hilft Dir dieser Thread (case string) weiter?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Case Probleme

  Alt 13. Nov 2007, 19:08
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Case Probleme

  Alt 14. Nov 2007, 10:14
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
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:43 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