Error: Ordinal expression expected

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
DetRRG
Beiträge: 3
Registriert: So 3. Okt 2010, 11:11

Error: Ordinal expression expected

Beitrag von DetRRG »

Hallo zusammen,

ich habe folgendes Programm in Lazarus geschrieben:

program Temperaturumrechnung (input, output);
{Fahrenheit werden in Celsius umgerechntet}

var
Fahrenheit,
Celsius : real;

begin
{lese die Fahrenheitwerte ein}
writeln('Bitte geben Sie die Fahrenheitwerte als real Werte ein');
readln(Fahrenheit);

if Fahrenheit then
{Berechne Wert in Celsius}
Celsius:= [5 * (Fahrenheit - 32)] / 9
write('Der Wert', Fahrenheit, 'betraegt in Celsius', Celsius)
end. {Werte in Celsius wurden ausgegeben}

In der Zeile Fahrenheit in Celsius umgewandelt werden soll wird nun folgender Fehler gemeldet:

Error: Ordinal expression expected

Wenn ich aber bei der Variablendeklaration real durch integer ersetze dann erscheint folgender Fehler:

Für die Umrechnungszeile:

Fahrenheit(15,18) Error: Incompatible types: got "Set Of Byte" expected "Extended"

Wie behebe ich dieses Problem? Ich will gerne das real Werte eigelesen werden können.

Kann mir da jemand helfen.

Vielen Dank,

DetRRG

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6947
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Error: Ordinal expression expected

Beitrag von af0815 »

Die eckigen Klammern durch runde ersetzen.

Code: Alles auswählen

Celsius:= (5 * (Fahrenheit - 32)) / 9;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

DetRRG
Beiträge: 3
Registriert: So 3. Okt 2010, 11:11

Re: Error: Ordinal expression expected

Beitrag von DetRRG »

Prima jetzt klappt es. Aber es gibt noch ein Problem:

Ich kann jetzt die Werte eingeben. Da wo aber das Programm angezeigt werden soll blink die Berechnung nur kurz auf und verschwindet dann sofort wieder ohne das ich das Ergebnis schnell genug sehen könnte. Wie kann man denn das beheben?

Gruß,

DetRRG

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Error: Ordinal expression expected

Beitrag von Scotty »

DetRRG hat geschrieben:Wie kann man denn das beheben?
1. GUI (Anwendung statt Programm oder Konsolenanwendung)
2. Script (pause)
3. Eine eigene Tastaturabfrage einbauen (repeat until keypressed o.ä.)
4. Ausgabe woanders hin (Drucker, Browser, Datei etc.)

DetRRG
Beiträge: 3
Registriert: So 3. Okt 2010, 11:11

Re: Error: Ordinal expression expected

Beitrag von DetRRG »

Ok, ich nähere mich einem Ergebnis. Wie kann ich denn den Punkt zur Pause bzw. zur Tastaturabfrage umsetzen? Ich kenne diese beiden Kommandos leider noch nicht.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: Error: Ordinal expression expected

Beitrag von Hitman »

Code: Alles auswählen

readln;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Error: Ordinal expression expected

Beitrag von carli »

Vom Programm aus die Zeile abzufragen ist ein ziemlich schlechter Trick.
Besser wäre, ein Konsolenprogramm auch wirklich in der Konsole auszuführen ;)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Error: Ordinal expression expected

Beitrag von Euklid »

Hallo DetRRG,
DetRRG hat geschrieben: In der Zeile Fahrenheit in Celsius umgewandelt werden soll wird nun folgender Fehler gemeldet:

Error: Ordinal expression expected
Ich vermute das Problem liegt darin, dass Du eine rechteckige Klammer benutzt. Kannst sie ja mal durch eine Runde ersetzen, dann dürfte der Fehler meines Erachtens nicht mehr auftreten.
Eckige Klammern haben bei der Programmiersprache Pascal oft eine besondere Bedeutung.

Viele Grüße, Euklid

EDIT:
Habe gerade gesehen, das Problem wurde schon behoben. Abweichende, nicht zur Überschrift passende Fragen bitte jeweils in einem neuen Thread stellen, danke!

Ansonsten stimme ich meinem Vorredner zu: readln; würde das neue Problem lösen.

Antworten