Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Case of für Strings


*Eldorado - So 03.10.10 12:02
Titel: Case of für Strings
Hi,
Ich habe ein kleines Problem.
Ich habe diese Sauce:
runner und NHash sind Integer und X ist ein String

Quelltext
1:
2:
3:
4:
5:
for runner:=1 to NHash do begin
case X of
'ü': X:='Q';
'p': X:='A';
....

Und den Fehler:
[Fehler] uHaupt.pas(36): Ordinaltyp erforderlich

Heißt das das ich Case nicht für Strings benutzen kann?

M.f.G.
Eldorado


Marc. - So 03.10.10 12:12

Ein Ordinaltyp ist einaufzählbarer Wert, wie beispielsweise Integer (1,2,3,4,5..) oder Chars (a,b,c,d,e...).
Insofern kannst Du in diesem Fall nur ein einzelnes Element vom String, sprich ein Char, vergleichen:

Delphi-Quelltext
1:
Case myString[1of                    

Auf Grund der For-Schleife tippe ich darauf, dass Du sowas suchst: ;)

Delphi-Quelltext
1:
2:
case X[runner] of
  'ü': X[runner] := 'Q';



user profile icon*Eldorado hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe diese Sauce:

Da haben Dir wohl die Strings die Sauce gut versalzen. :mrgreen:


*Eldorado - So 03.10.10 12:33

Nein die For schleife Definiert nur den Grad der gewünschten Verschiebung.
Kann ich das net iwie umgehn? oder muss ich jetzt wirklich alles mit if schreiben? o.O

So hat sich erledigt..ich hab schnell alles mit dem NotePad zu If´s gemacht


Tranx - So 03.10.10 13:19

Das ist leider in Delphi prinzipiell nicht möglich, in der Case-Abfrage nicht Ordinaltypen (s. o.) zu verwenden. Daher bist Du leider gezwungen, so vorzugehen, wie Du es dann gemacht hast, mit IF-Abfragen z.B.


Delete - So 03.10.10 13:30

Es gibt aber eine nachträgliche Implementierung. Einfach mal im Forum suchen.