Error: Illegal expression treibt mich in den Wahnsinn :)

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DOS
Beiträge: 18
Registriert: Mi 13. Dez 2017, 21:04
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von DOS »

Hallo liebe Forenmitglieder, ich hoffe ich bin hier richtig.

Ich lerne gerade etwas Pascal und stehe vor meinem ersten Problem, welches ich mal nicht mit Referenzen ect.. gelöst bekomme.
Und zwar bekomme ich bei einer einfachen If abfrage ob der Stringinhalt = '1' ist einen Error: Illegal expression angezeigt. Auch ein AnsiContainsText(exTmp,'1') bringt den gleichen fehler. Eventuell hilft es ja meinen Denkfehler zu erklären, das ich vorher eher in QB und VB Programmiert habe und da hatte ich bei einer einfachen if abfrage so nie Probleme gehabt wenn die Typen passten.

Nun meine Frage wieso? Habe ich eventuell das Problem zwei unterschiedliche Typen vergleichen zu wollen? Ich dachte bisher beides ist vom Typ String. Und vorallem was bedeutet Illegal expression genau?

Ich hoffe mir kann hier wer eventuell helfen :) Besten Dank schonmal.
Gruß DOS

Code: Alles auswählen

 
var
  var myFile : TextFile;
 var exTmp : String;
  Za1, Za2, Za3, Za4, Za5, Za6, Za7, Za8, Za9, Za10 : String;
  exZc1, exZc2, exZc3 : Boolean;
 
begin
 
  assignfile(myFile,eFile);
     reset(myFile);
     ReadLn(myFile,Za1);
     ReadLn(myFile,Za2);
     ReadLn(myFile,Za3);
     ReadLn(myFile,Za4);
     ReadLn(myFile,Za5);
     ReadLn(myFile,Za6);
     ReadLn(myFile,Za7);
     ReadLn(myFile,Za8);
     ReadLn(myFile,Za9);
     ReadLn(myFile,Za10);
     ReadLn(myFile,exTmp);
     CloseFile(myFile);
     If exTmp = '1' Then exZc1 = True; else exZc1 = false;
end;


Code: Alles auswählen

Hint: (11030) Start of reading config file C:\lazarus\fpc\3.0.2\bin\x86_64-win64\fpc.cfg
Hint: (11031) End of reading config file C:\lazarus\fpc\3.0.2\bin\x86_64-win64\fpc.cfg
Free Pascal Compiler version 3.0.2 [2017/02/27] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
(1002) Target OS: Win64 for x64
(3104) Compiling projekt1.lpr
(3104) Compiling unit1.pas
(3104) Compiling unit1.pas
(3104) Compiling unit3.pas
C:\fpc\unit3.pas(23,26) Hint: (5024) Parameter "Sender" not used
C:\fpc\unit3.pas(24,24) Hint: (5024) Parameter "Sender" not used
C:\fpc\unit3.pas(86,38) Error: (3203) Illegal expression
unit3.pas(125) Fatal: (10026) There were 1 errors compiling module, stopping
Fatal: (1018) Compilation aborted
Error: C:\lazarus\fpc\3.0.2\bin\x86_64-win64\ppcx64.exe returned an error exitcode
 

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von Soner »

Du hast Doppelpunkt vergessen. Ich habe hinzugefügt und rot markiert.
Bei Pascal macht man Zuweisungen mit := .
a:=1;

If exTmp = '1' Then exZc1 := True else exZc1 := false;

DOS
Beiträge: 18
Registriert: Mi 13. Dez 2017, 21:04
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von DOS »

Soner hat geschrieben:Du hast Doppelpunkt vergessen. Ich habe hinzugefügt und rot markiert.
Bei Pascal macht man Zuweisungen mit := .
a:=1;
If exTmp = '1' Then exZc1 := True else exZc1 := false;


Autsch, wenn man den Wald vor lauter Bäumen nicht mehr sieht. Besten dank, daran muss ich mich echt noch gewöhnen das Zuweisungen mit := statt mit einem einfachen = getätigt werden. Schade das die Compilerausgabe da keinen eindeutigen Hinweis gibt :D

Naja wie dem auch sei. Besten Dank :)

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von Mathias »

Code: Alles auswählen

If exTmp = '1' Then exZc1 := True else exZc1 := false;

Dies kann man sogar einfacher machen. :wink:

Code: Alles auswählen

exZc1 := exTmp = '1'


Za? würde ich in eine Array packen, dann könntest du die ReadLn in eine for-to-Schleife nehmen. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DOS
Beiträge: 18
Registriert: Mi 13. Dez 2017, 21:04
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von DOS »

Mathias hat geschrieben:Za? würde ich in eine Array packen, dann könntest du die ReadLn in eine for-to-Schleife nehmen. :wink:


Joa, wäre noch eine überlegung wert mir Arrays in dem Zuge gleich mal anzuschauen, danke für den Tipp. Für den Anfang zum lernen wollte ich alles so einfach wie möglich halten. Schleifen habe ich noch keine genutzt in Pascal.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Error: Illegal expression treibt mich in den Wahnsinn :)

Beitrag von Mathias »

Schleifen habe ich noch keine genutzt in Pascal.

Schleifen sind das a und o der Programmierung.

Wen du da etwas nicht verstehst einfach fragen. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten