Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RAD 2009: Komische Auffassung von Syntax... (https://www.delphipraxis.net/128205-rad-2009-komische-auffassung-von-syntax.html)

alzaimar 26. Jan 2009 09:37


RAD 2009: Komische Auffassung von Syntax...
 
Hab gerade ein Programm entwanzt und bin über einen Prozeduraufruf gestolpert:
Delphi-Quellcode:
Procedure DoProcedure (aParameter : TSomeType);
Begin
End;
...
DoProcedure (MyParameter,); // <--- man beachte das Komma
..
Das kompiliert :shock: , lustig, gelle?

Hier nochmal ein komplettes 'Projekt'
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils;

  Procedure Foobar (s : String);
  Begin
    Writeln(s);
  End;
begin
  try
    Foobar('Hello World!',); // <--- Möööp
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.
:wiejetzt: Ich find das ja nett, aber was soll das? Hat das irgendeinen Sinn?

sirius 26. Jan 2009 09:42

Re: RAD 2009: Komische Auffassung von Syntax...
 
Nö, aber es stört beim parsen des Codes nicht. Und es wurde anscheinend auch nie implementiert, dass das ein Fehler ist.

btw: Darüber gabs schon Threads :zwinker:
Edit: Und das ist nicht erst seit 2009 so.

Clemens L. 26. Jan 2009 09:47

Re: RAD 2009: Komische Auffassung von Syntax...
 
Turbo Delphi 2006 meckert auch nicht, unterkringelt es aber rot als Fehler ;)

Delphi 6 hingegen meldet "Zuviele Parameter" ;)

alzaimar 26. Jan 2009 09:51

Re: RAD 2009: Komische Auffassung von Syntax...
 
@Clemens L.: Ist schon komisch, oder? Ein Parser (Syntaxchecker), der völlig losgelöst von einem Compiler agiert ... :wall:
@sirius: Das dachte ich mir schon, aber wonach hätte ich suchen können/müssen? Ach, egal. Ist halt lustg.

mirage228 26. Jan 2009 10:11

Re: RAD 2009: Komische Auffassung von Syntax...
 
Wird wohl genau aus dem selben Grund so sein, wie man auch das Semikolon ; vor einem End weglassen kann
Delphi-Quellcode:
procedure WhatEver;
begin
  Eins;
  Zwei;
  Drei
end;
Semikolons (und dann auch wohl Kommata) sind halt nur Seperatoren, und nicht Terminatoren (wie unter C++) - so meine ich das mal gelesen zu haben.

jbg 26. Jan 2009 11:29

Re: RAD 2009: Komische Auffassung von Syntax...
 
Zitat:

Zitat von alzaimar
Delphi-Quellcode:
DoProcedure (MyParameter,); // <--- man beachte das Komma
..
Das kompiliert :shock: , lustig, gelle?

Also mein Delphi 2009 meldet "Zu viele Parameter".

Delphi 2009 Update 1 und 2 installiert.

XiaN 26. Jan 2009 15:13

Re: RAD 2009: Komische Auffassung von Syntax...
 
Delphi-Quellcode:
procedure WhatEver;
begin
  0;
end;
Compiliert unter 200x auch. Unter Delphi 7 hingegen nicht :zwinker:

nahpets 26. Jan 2009 15:22

Re: RAD 2009: Komische Auffassung von Syntax...
 
Hallo,

könnte es sein, dass die neueren Delphiversionen auch unnütze (leere) Prozeduren, einschließlich ihrer Aufrufe, wegoptimieren?
Delphi-Quellcode:
Procedure nixdamachich(boooeehhh : Integer);
begin
end;
ist ja irgendwie sinnfrei und
Delphi-Quellcode:
...
  nixdamachich(12345);
...
in diesem Zusammenhang ebenso. Und wenn nixdamachich weg kann, dann dürften die sinnigsten und unsinnigsten Paramter auch herzlich wenig Bedeutung haben. Wofür dann noch deren syntaktische Korrektheit prüfen?

Ist jetzt nur mal so ein bisserl Spekulatius in die Runde geworden.

jbg 26. Jan 2009 16:57

Re: RAD 2009: Komische Auffassung von Syntax...
 
Zitat:

Zitat von nahpets
könnte es sein, dass die neueren Delphiversionen auch unnütze (leere) Prozeduren, einschließlich ihrer Aufrufe, wegoptimieren?

Das wäre schlimm. Gottseidank ist dem nicht so (außer du rufst die Funktion gar nicht auf)

Zitat:

Ist jetzt nur mal so ein bisserl Spekulatius in die Runde geworden.
Warum spekulieren, wenn man den Delphi Compiler anwerfen kann.

nahpets 27. Jan 2009 08:59

Re: RAD 2009: Komische Auffassung von Syntax...
 
Zitat:

Zitat von jbg
Warum spekulieren, wenn man den Delphi Compiler anwerfen kann.

Weil ich die Delphiversion, bei der das Phänomen auftritt, nicht habe :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.

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