Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - case (...) of (...) bei Strings
WeBsPaCe - Sa 29.01.05 14:46
Titel: case (...) of (...) bei Strings
Hallole!! :D
Hab' folgenden Code:
Delphi-Quelltext
1: 2: 3: 4: 5:
| case Edit1.Text of 'StringderimEdit1steht': Form1.Close; else end; |
Jetzt sagt Delphi aber:
Error Messages:
1: 2:
| [Error] Unit1.pas(47): Ordinal type required [Error] Unit1.pas(48): Incompatible types: 'Integer' and 'String' |
Warum denn das?? Wie muss das richtig heißen??
Danke schonmal, gell??
Moderiert von
Gausi: Topic aus Sonstiges verschoben am Sa 29.01.2005 um 13:54
Narses - Sa 29.01.05 14:48
Moin!
Das sagt doch der Compiler:
Strings sind so schlecht "aufzählbar"... :wink: (-> geht nur z.B. mit Integer).
Für Strings mußt du if-then-else nehmen.
cu
Narses
//EDIT: meine "Beeindruckung" verliert sich aber grade wieder leicht... :lol: :wink:
WeBsPaCe - Sa 29.01.05 14:53
Ehrlich nicht?? :D
Ich such eigentlich nur ne Möglichkeit, wie ich verschiedene Strings abfragen kann, also wenn Edit1 Hanswurst ist dann mach das, wenn's Wienerwust ist dann mach das und wenn's keins von beidem ist, dann mach das... :D
PS.: Ne StringList muss es nicht sein, soviele Abfragen sind's nich.. Da ist if-else besser..
//EDIT: @Narses Die muss nich verfliegen, ich kenn das nur vom C++:switch
WeBsPaCe - Sa 29.01.05 15:07
Alles klar, vielen Dank!!! Ich nehm aber wahrscheinlich doch if-else... ;)
MitschL - Mo 31.01.05 11:54
Ähm,
@raziel: Die String-Case-Lösung ist aber so nicht uneingeschränkt nutzbar.
Der Eintrag muß vorhanden sein, weil es sonst zu einer falschen Lösung kommt, weil es zu einer 'Lösung' kommt. Somit wird der Case-zweig auch gar nicht genutzt.
ich würd sowas machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| Function CaseStr( Value: String; Args: Array of String; Sensitive: Boolean ): Integer; var found: Boolean; Begin found := false; If Sensitive Then For Result := High( Args ) DownTo 0 Do If CompareStr( Value, Args[ Result ] ) = 0 Then begin found := true; Break; end Else For Result := High( Args ) DownTo 0 Do If CompareText( Value, Args[ Result ] ) = 0 Then begin found := true; Break; end;
if not found then Result := -1;
End; |
gegrüßt!
PS.: Paßt zwar nur mittelbar hier hin, stach mir aber nur durch den Link von Dir im Auge rum und sollte IMHO nicht unbeachtet bleiben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!