Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unklare Syntax (https://www.delphipraxis.net/66624-unklare-syntax.html)

Alexander Roth 1. Apr 2006 16:23


Unklare Syntax
 
Hallo,

das habe ich gerade gesehen ist für den Kompiler anscheinend 2 Deutig und er geht beidesmal in den Else Pfad:
Delphi-Quellcode:
  if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3   
else
  primearray.Lauf:=0;
Denn er liest es anscheinend auch mal so:
Delphi-Quellcode:
  if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3   
  else
    primearray.Lauf:=0;
Ist das ein Fehler von mir, oder ist das ein wirklich uneindeutiges Beispiel einer schlechten Pascal-Syntax.

Wie kriegt man das behoben?

noch_ein_hannes 1. Apr 2006 16:28

Re: Unklare Syntax
 
Naja, vielleicht ab und zu auch mal richtig ausschlafen?!? :-)

Die Muhkuh 1. Apr 2006 16:31

Re: Unklare Syntax
 
Hi,

Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3   
else
  primearray.Lauf:=0;
Woher soll der Compiler auch wissen, was du meinst?

Am besten immer Begin und End hinzufügen:

Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
begin
  if primearray.Lauf=0 then
  begin
    primearray.Lauf:=3 
  end;
end
else
begin
  primearray.Lauf:=0;
end;

himitsu 1. Apr 2006 16:33

Re: Unklare Syntax
 
So sollte Delphi erkennen (macht es bei mir auch immer),
Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3   
  else
    primearray.Lauf:=0;
denn das ELSE gehört immer zum letzten Abfrage-Block.

Das Einzige, was ich mir noch vorstellen könnte wäre das,
Code:
if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3[b][color=#ff0000];[/color][/b]
else
  primearray.Lauf:=0;
aber hierbei sollte man eh besser ein BEGIN-END einfügen.
Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
begin
  if primearray.Lauf=0 then
    primearray.Lauf:=3;
end
else
  primearray.Lauf:=0;

Alexander Roth 1. Apr 2006 16:41

Re: Unklare Syntax
 
Zitat:

Naja, vielleicht ab und zu auch mal richtig ausschlafen?!? Smile
Danke für deinen Hochintellektuellen und hilfreichen Beitrag. :smile2:

Ja beginn und end habe ich eingefügt, und es klappt.

Zitat:

Zitat von himitsu
So sollte Delphi erkennen (macht es bei mir auch immer),
Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3   
  else
    primearray.Lauf:=0;
denn das ELSE gehört immer zum letzten Abfrage-Block.

Du meinst das else gehört zu
Delphi-Quellcode:
if primearray.Lauf=0 then
Das würde das komische Verhalten erklären.

Danke

Tschüss

Khabarakh 1. Apr 2006 17:05

Re: Unklare Syntax
 
Zitat:

Zitat von Alexander Roth
Zitat:

Naja, vielleicht ab und zu auch mal richtig ausschlafen?!? Smile
Danke für deinen Hochintellektuellen und hilfreichen Beitrag. :smile2:

Vielleicht meint er damit, dass Ausgeschlafene ehr die Delphi-Hilfe konsultieren :smile2: .

Flocke 1. Apr 2006 18:42

Re: Unklare Syntax
 
Zitat:

Zitat von Alexander Roth
Du meinst das else gehört zu
Delphi-Quellcode:
if primearray.Lauf=0 then
Das würde das komische Verhalten erklären.

Das ist kein komisches Verhalten, so ist es eben definiert (wie Himitsu schon schrieb): ein ELSE gehört immer zum direkt davor stehenden THEN auf der selben Verschachtelungsebene - wie du es hinschreibst (also die Einrückung) ist dem Compiler völlig egal.

Frickeldrecktuxer_TM 1. Apr 2006 18:48

Re: Unklare Syntax
 
Zitat:

Zitat von himitsu
Das Einzige, was ich mir noch vorstellen könnte wäre das,
Code:
    primearray.Lauf:=3[b][color=#ff0000];[/color][/b]
else

vorstellen? apropos vorstellen, darf ich vorstellen? das ist error, syntax error.

Elvis 1. Apr 2006 19:01

Re: Unklare Syntax
 
Zitat:

Zitat von Frickeldrecktuxer_TM
Zitat:

Zitat von himitsu
Das Einzige, was ich mir noch vorstellen könnte wäre das,
Code:
    primearray.Lauf:=3[b][color=#ff0000];[/color][/b]
else

vorstellen? apropos vorstellen, darf ich vorstellen? das ist error, syntax error.

*rofl*, und schon weiß ich wer du bist. :P

SirThornberry 1. Apr 2006 19:07

Re: Unklare Syntax
 
Ich möchte euch bitten zurück zum thema zu kommen und nicht unsachlich zu werden. Ich möchte nur ungern den Thread wegen OT schließen..

s.h.a.r.k 1. Apr 2006 19:20

Re: Unklare Syntax
 
Delphi-Quellcode:
primearray.Lauf:=3;
else
Das funktioniert nicht - da meckert der Delphi-Compiler dann!

Den selben "Fehler" habe ich letztens auch gemacht! Mit dem Einrücken des Codes ist es für dich sicherlich klar, wie es funktionieren sollte, aber der Compiler weiß es ja nicht. Hab noch keinen gesehen, der auf das Codeeinrücken reagiert - wäre wohl auch sehr schlecht möglich :thumb:

sECuRE 1. Apr 2006 19:21

Re: Unklare Syntax
 
Hi,

Du kannst das Problem auch folgendermaßen lösen:
Delphi-Quellcode:
if form1.CheckPrimeArray.Checked then
  if primearray.Lauf=0 then
    primearray.Lauf:=3
  else
else
  primearray.Lauf:=0;
cu

DGL-luke 1. Apr 2006 20:07

Re: Unklare Syntax
 
Zitat:

Zitat von s.h.a.r.k
...aber der Compiler weiß es ja nicht. Hab noch keinen gesehen, der auf das Codeeinrücken reagiert - wäre wohl auch sehr schlecht möglich :thumb:

Bei Google suchenPython ;)

s.h.a.r.k 2. Apr 2006 19:44

Re: Unklare Syntax
 
Zitat:

Zitat von DGL-luke
Zitat:

Zitat von s.h.a.r.k
...aber der Compiler weiß es ja nicht. Hab noch keinen gesehen, der auf das Codeeinrücken reagiert - wäre wohl auch sehr schlecht möglich :thumb:

Bei Google suchenPython ;)

Mit dem Zeugs hab ich leider noch nie was zu tun gehabt! :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz