AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

F9 misslingt

Ein Thema von Delbor · begonnen am 3. Jul 2021 · letzter Beitrag vom 5. Jul 2021
Antwort Antwort
Seite 1 von 2  1 2      
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

F9 misslingt

  Alt 3. Jul 2021, 21:25
Delphi-Version: 10.4 Sydney
Hi zusammen

Ich hab hier ein älteres Projekt, das nicht mehr startet. Die Fehlermeldung:
Zitat:
[dcc32 Fehler] SynCommons.pas(67232): E2029 Ausdruck erwartet, aber 'END' gefunden
Das Codeschnipsel:
Delphi-Quellcode:
                      function GetDelphiCompilerVersion: RawUTF8;
                      begin
                        result :=
{$IFDEF FPC}
                          'Free Pascal'
{$IFDEF VER2_6_4} + ' 2.6.4'{$ENDIF}
{$IFDEF VER3_0_0} + ' 3.0.0'{$ENDIF}
{$IFDEF VER3_0_1} + ' 3.0.1'{$ENDIF}
{$IFDEF VER3_0_2} + ' 3.0.2'{$ENDIF}
{$IFDEF VER3_1_1} + ' 3.1.1'{$ENDIF}
{$IFDEF FPC_HAS_MANAGEMENT_OPERATORS} + ' MOP'{$ENDIF}
{$ELSE}
{$IFDEF VER130} 'Delphi 5'{$ENDIF}
{$IFDEF CONDITIONALEXPRESSIONS}  // Delphi 6 or newer
{$IF     defined(KYLIX3)}'Kylix 3'
{$ELSEIF defined(VER140)}'Delphi 6'
...
...
{$ELSEIF defined(VER330)}'Delphi 10.3 Carnival'
{$IFEND}
{$ENDIF CONDITIONALEXPRESSIONS}
{$ENDIF}
{$IFDEF CPU64}
                          + ' 64 bit'
{$ENDIF}
                      end;
Doppelklick auf die Fehlermeldung setzt den Cursor vor das End;

Die ersten Zeilen der Unit:
Delphi-Quellcode:
/// common functions used by most Synopse projects
/// - this unit is a part of the freeware Synopse mORMot framework,
/// licensed under a MPL/GPL/LGPL tri-license; version 1.18
unit SynCommons;



{$I Synopse.inc} /// define HASINLINE USETYPEINFO CPU32 CPU64 OWNNORMTOUPPER

interface
Ich habe die Unit nie angefasst.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: F9 misslingt

  Alt 3. Jul 2021, 21:52
Ich bin jetzt nicht durch die ganzen verschachtelten IFDEFs durchgegangen, aber da fehlt wohl Sydney noch in der Liste, deshalb wird Result nichts zugewiesen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#3

AW: F9 misslingt

  Alt 3. Jul 2021, 22:43
Ich hab hier ein älteres Projekt, das nicht mehr startet. Die Fehlermeldung:
Zitat:
[dcc32 Fehler] SynCommons.pas(67232): E2029 Ausdruck erwartet, aber 'END' gefunden
Ich würde mir die aktuelle Version von mORMot1 laden. Arnaud achtet sehr auf Kompatibilität und in neueren Versionen ist die Unit SynCommons nicht mehr ganz so groß. Da mORMot nicht installiert werden muss, kann man eine neue Version mal problemlos in 2 Minuten testen.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: F9 misslingt

  Alt 3. Jul 2021, 22:53
Leider machen viele Entwickler den gleichen Fehler:
Es wird nur auf bekannte Delphiversionen geprüft, aber neue unbekannte Versionen werden vollkommen vergessen.

Sinnvoll ist bei solchen Versionsprüfungen immer, dass man davon ausgeht, dass es sich um eine neuere Version handelt, wenn die bereits bekannten Direktiven nicht vorhanden sind. In diesem Fall könnte man z.B. 'Neuer als Delphi 10.3" schreiben.
Meistens geht es aber um die Prüfung, ob man etwas auf die eine oder andere Weise machen muss, weil sich bei neueren Versionen etwas geändert hat bzw. erst dann verfügbar ist. Auch dann wäre es sinnvoll von einer neueren Version auszugehen und alles so zu machen wie für die höchste bekannte Version.

Ein Beispiel dafür ist meine Definition hier:
https://github.com/jaenicke/MTCL/blo...erVersions.inc
Diese Komponenten funktionieren mit 10.4 ganz normal weiter, weil zwar zu dem Zeitpunkt nur 10.3 Rio bekannt war, es aber als Delphi10RioUp erkannt wird...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.057 Beiträge
 
Delphi XE2 Professional
 
#5

AW: F9 misslingt

  Alt 4. Jul 2021, 01:08
Ich bin nicht so sehr vertraut mit all diesen {$If...}, habe aber mal versucht mich da durchzubeißen.

Wenn keines der {SIF..} zutrifft, dann steht da m.E.nur noch
Delphi-Quellcode:
begin
   result :=
end;
und das führt dann zu dem Fehler.
Ich habe mal folgende Zeilen hinzugefügt

Hinter {$ELSEIF defined(VER330)}'Delphi 10.3 Carnival' {$ELSE} 'Unbekannte Version' .
vor {$ENDIF CONDITIONALEXPRESSIONS} {$ELSE} 'Keine CONDITIONALEXPRESSIONS' .

Das sieht dann so aus (und funktioniert bei mir)
Den Typ des Results von GetDelphiCompilerVersion habe ich auf String geändert, weil mein Delphi RawUTF8 nicht mag.

Delphi-Quellcode:
                      function GetDelphiCompilerVersion:String;
                      begin
                        result :=
{$IFDEF FPC}
                          'Free Pascal'
   {$IFDEF VER2_6_4} + ' 2.6.4'{$ENDIF}
   {$IFDEF VER3_0_0} + ' 3.0.0'{$ENDIF}
   {$IFDEF VER3_0_1} + ' 3.0.1'{$ENDIF}
   {$IFDEF VER3_0_2} + ' 3.0.2'{$ENDIF}
   {$IFDEF VER3_1_1} + ' 3.1.1'{$ENDIF}
   {$IFDEF FPC_HAS_MANAGEMENT_OPERATORS} + ' MOP'{$ENDIF}

{$ELSE}

   {$IFDEF VER130} 'Delphi 5'{$ENDIF}
   {$IFDEF CONDITIONALEXPRESSIONS}  // Delphi 6 or newer
      {$IF     defined(KYLIX3)}'Kylix 3'
      {$ELSEIF defined(VER140)}'Delphi 6'
      {$ELSEIF defined(VER330)}'Delphi 10.3 Carnival'

      {$ELSE} 'Unbekannte Version'  // Hinzugefügt

      {$IFEND}

   {$ELSE} 'Keine CONDITIONALEXPRESSIONS'  // Hinzugefügt

   {$ENDIF CONDITIONALEXPRESSIONS}


{$ENDIF}

{$IFDEF CPU64}
                          + ' 64 bit'
{$ENDIF}
                      end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: F9 misslingt

  Alt 4. Jul 2021, 07:54
Hi DeddyH

Guten Morgen! Vielen Dank für deine prompte Antwort!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: F9 misslingt

  Alt 4. Jul 2021, 19:56
Hi zusammen

Meine derzeitige Lösung:
Delphi-Quellcode:
{$ELSEIF defined(VER320)}'Delphi 10.2 Tokyo'
{$ELSEIF defined(VER330)}'Delphi 10.3 Carnival'
{$ELSEIF defined(VER340)}'Delphi 10.4 Sydney'
{$IFEND}
{$ENDIF CONDITIONALEXPRESSIONS}
{$ENDIF}
{$IFDEF CPU64}
                          + ' 64 bit'
{$ENDIF}
                      end;
Erstmal hat es mich doch etwas verblüfft, wie einfach das ging - kein suchen nach irgendwelchen Versionsnummern und verwenden des Originalnamens. Meines Wissens war Carnival der Entwicklungsname für Rio. Denjenigen für Sydney hätte ich erst suchen müssen.

[QUOTE=mytbo;1491801]
Ich würde mir die aktuelle Version von mORMot1 laden. Arnaud achtet sehr auf Kompatibilität und in neueren Versionen ist die Unit SynCommons nicht mehr ganz so groß. Da mORMot nicht installiert werden muss, kann man eine neue Version mal problemlos in 2 Minuten testen.
Bis bald...
Thomas
Zumindest im Moment ist die Weiterverwendung, bzw. Erneuerung des aktuellen Projektes kein Thema. Nachdem ich damit an Grenzen gestossen war, hab ich die weitere Arbeit daran eingestellt. Ich wollte mir das Projekt aber nochmal debuggen, da es die einzelnen Seiten eines PDFs per Zeiger verwaltet und dabei alle Seiten 'schliesst', die ausserhalb des Anzeigebereichs landen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.057 Beiträge
 
Delphi XE2 Professional
 
#8

AW: F9 misslingt

  Alt 5. Jul 2021, 02:49
Und wenn dann eine neue Version erscheint, hast du wieder das gleiche Problem.
Wie jaenicke in #4 schrieb
Zitat:
Leider machen viele Entwickler den gleichen Fehler:
Es wird nur auf bekannte Delphiversionen geprüft, aber neue unbekannte Versionen werden vollkommen vergessen.
Vielleicht entschließt du dich dann ja doch, auch diesen Fall abzufangen.
Ein Beispiel habe ich in #5 gezeigt.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

AW: F9 misslingt

  Alt 5. Jul 2021, 06:16
Leider machen viele Entwickler den gleichen Fehler:
Es wird nur auf bekannte Delphiversionen geprüft, aber neue unbekannte Versionen werden vollkommen vergessen.
In diesem Fall ist es aber definitiv kein Fehler, sondern eine bewusste Entscheidung von Arnaud. Einer der Gründe ist, dass er die Nutzer dazu anhalten will, sich regelmäßig Updates zu holen, und diese gibt es i.A. mehrfach pro Woche

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#10

AW: F9 misslingt

  Alt 5. Jul 2021, 10:37
* garnichts zu machen und den Nutzer grob fahrlässig in einen "nichtsagenden" Fehler rennen zu lassen
* oder einfach nur "unbemerkt" ein 'unbekannt' zurückzugeben
* oder stattdessen den Compiler gezielt mit einem {$Message Error 'zu alt, hol dir was Neues'} bzw. {$Message Fatal ... abzuwürgen
ist ein kleiner Unterschied
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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