Turbo Pascal - Case Statements mit Wörtern |
18.09.2017, 23:38 | Auf diesen Beitrag antworten » |
INFO | Turbo Pascal - Case Statements mit Wörtern Meine Frage: Hallo, Ich versuche gerade in Turbo Pascal ein case statement zu schreiben: case wunsch of 'Kaffee': begin Writeln('Bezahlen Sie 1,00 EUR fuer: ',wunsch); Das ist der case-Teil. Der Rest ist egal, da der Error immer hier bei diesem case-Statement kommt. Die Variable wunsch ist ein String. Mit char üwrde das ja nicht gehen, da char nur mit einzelnen Zeichen geht, anstatt mit mehreren. Wenn ich nun versuche mein Programm auszugeben, dann sagt TP: Error 39: Ordinal Expression expected. Vielen Dank im vorraus. Meine Ideen: Keine weiteren Ideen |
|
|
19.09.2017, 07:35 | Auf diesen Beitrag antworten » |
as_string | Hallo! Ich habe schon 25 Jahre kein Pascal mehr gemacht, aber kann man case-of nicht nur bei ganzzahligen und enum-Werten verwenden? Eine char-Variable ist dabei ein Ganzzahlwert, weil es ja einem Byte mit 256 verschiedenen Werten entspricht. Aber ein String kann ja eine beliebige Anzahl von Zeichen haben, so dass es keine direkte Konvertierung zu einer Ganzzahl geben kann. Pascal macht da einen einfachen Integer-Vergleich am Ende. Ein Stringvergleich ist viel aufwändiger. Gruß Marco |
19.09.2017, 17:29 | Auf diesen Beitrag antworten » |
INFO | Wie mache ich das dann mit einem String?? |
20.09.2017, 16:46 | Auf diesen Beitrag antworten » |
eulerscheZahl | Zunächst hat as_string Recht, case und string verträgt sich nicht immer, wie in diesem Forenbeitrag von 2012 geschrieben. Mittlerweile gehen auch strings, siehe Doku. "The constants appearing in the various case parts must be known at compile-time, and can be of the following types : enumeration types, Ordinal types (including chars) or string types" Turbo Pascal ist aber nicht Free Pascal und kann das nicht. Da musst du wohl ein if-else machen (du könntest ein case mit dem Hashwert des string machen, aber dazu würde ich nicht raten). |
Anzeige | |
|
|
20.09.2017, 17:14 | Auf diesen Beitrag antworten » |
INFO | Und könntest du mir auch erklären warum bei einem If Else Statement Turbo Pascal den Error 42 (Error 42: Error in expression) bei -> else<- von if else ausfweist? Mein if else: if x = 'Kaffee' then begin writeln('Dein Getränk: Kaffee'); writeln('Bezahle: 1.00 EUR'); readln(preis); Error 42: Error in expression (hier) if else x = 'Wasser' then writeln('Dein Getränk: Wasser'); writeln('Bezahle: 0.10 EUR); readln(preis); |
20.09.2017, 19:20 | Auf diesen Beitrag antworten » |
eulerscheZahl | Dein begin hat kein end (müsste vor den else kommen). Und: es heißt "else if", nicht "if else". |
20.09.2017, 19:43 | Auf diesen Beitrag antworten » |
INFO | Hi, Wenn ich das mache, dann kommt ein anderer Error . Error 113: Error in Statement. Also das Statement: ... if x = 'Kaffee ' then begin writeln('Bezahle 1.00 EUR fuer Kaffee'); readln(wahl); end; else if x = 'Wasser' then begin writeln('Bezahle 0.10 EUR fuer Wasser'); readln(wahl); end; ... |
20.09.2017, 21:39 | Auf diesen Beitrag antworten » |
as_string | Ich weiß nicht, ob man in Pascal einfach den Gleichheitsoperator für Stringvergleiche verwenden kann. Man kann aber auf jeden Fall die Funktion CompareStr verwenden. Beide Strings sind gleich, wenn die Funktion 0 zurück gibt. Gruß Marco |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |
|