Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit... (https://www.delphipraxis.net/201996-immer-aerger-noe-nicht-mit-harry-sondern-dem-synedit.html)

Delbor 17. Sep 2019 15:28

Delphi-Version: 10.2 Tokyo

Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Hi zusammen

Um in meinem aktuellen Projekt SQLite-Tabellen anzulegen, wollte ich in früheren Projekten nachsehen, wie ichs da gemacht habe. Eines dieser Projekte verwendet das Synedit. Und dieses widerum eine Klasse TBetterregistry, die von TRegistry abgeleitet ist.
Auf meiner Suche bin ich nun auf folgenden Code gestossen:
Delphi-Quellcode:
  {$IFNDEF SYN_COMPILER_4_UP}
  TBetterRegistry = class(TRegistry)
    function OpenKeyReadOnly(const Key: string): Boolean;
  end;
  {$ELSE}
  TBetterRegistry = TRegistry;
  {$ENDIF}
Der Witz daran ist: Das TRegistry in der Klassendeklaration (Zeile 1) wird nicht angemeckert, jenes zwischen {$ELSE} und {$ENDIF} aber schon, und der Compilierungsvorgang bricht mit einer Fehlermeldung ab ([dcc32 Fehler] SynEditMiscClasses.pas(388): E2003 Undeklarierter Bezeichner: 'TRegistry').
Was ist da falsch?

Gruss
Delbor

mkinzler 17. Sep 2019 15:30

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Dann scheint
Code:
SYN_COMPILER_4_UP
definiert zu sein.

Luckie 17. Sep 2019 15:50

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Und bitte das nächste mal einen aussagekräftigeren Titel!

Delbor 17. Sep 2019 16:34

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Hi mkinzler
Zitat:

Zitat von mkinzler (Beitrag 1446670)
Dann scheint
Code:
SYN_COMPILER_4_UP
definiert zu sein.

Und was bedeutet das? Das die nicht angemeckerte Zeile gar nicht abgearbeitet wird und somit auch nicht zu einem Comppilerfehler führen kann? Könnte ich so durchaus nachvollziehen.
Andrerseits - TRegistry ist eine gültige Klasse...

In diversen Uses-Abschnitten hab ich nun folgendes geändert:
Delphi-Quellcode:
  System.Win.Registry,
//  Registry,
Es gab noch einige andere Fehler - ich hatte einen Frame entfernt, aber offensichtlich die *.dcu nicht. Nun läuft das Programm wieder.

Zitat:

Zitat von Luckie (Beitrag 1446672)
Und bitte das nächste mal einen aussagekräftigeren Titel!

Sorry, Luckie, aber nachdem mir diese Betterregistry, bzw TRegistry, schon vor Jahren Probleme bereitete, deren Ursache ich lange nicht fand, blieb mir eigentlich nur noch, das ganze von der humoristischen Seite zu sehen. Ichwerde mich aber nach bestem Wissen und Gewissen bessern.

Gruss
Delbor

TiGü 18. Sep 2019 08:21

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Dir ist schon klar, dass die Problemursache die Unit-Präfixe waren?

Uwe Raabe 18. Sep 2019 08:29

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Zitat:

Zitat von TiGü (Beitrag 1446798)
Dir ist schon klar, dass die Problemursache die Unit-Präfixe waren?

In der Tat! Leider verwenden immer noch eine ganze Reihe von Bibliotheken die alten Non-Prefix Unit-Namen, vermutlich aus Kompatibilitätsgründen oder einfach aus Bequemlichkeit. Das hat allerdings den Nachteil, daß jedes Projekt, das diese Bibliotheken im Source verwendet, einen passenden Eintrag für die Unit-Gültigkeitsbereichsnamen braucht - obwohl das eigentliche Projekt diese gar nicht benötigen würde. Dummerweise kann das aber die Compilierzeiten und das CodeInsight verlangsamen.

Delbor 18. Sep 2019 11:06

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Hi Uwe Raabe
Zitat:

Zitat von Uwe Raabe (Beitrag 1446809)
Zitat:

Zitat von TiGü (Beitrag 1446798)
Dir ist schon klar, dass die Problemursache die Unit-Präfixe waren?

In der Tat! Leider verwenden immer noch eine ganze Reihe von Bibliotheken die alten Non-Prefix Unit-Namen, vermutlich aus Kompatibilitätsgründen oder einfach aus Bequemlichkeit. Das hat allerdings den Nachteil, daß jedes Projekt, das diese Bibliotheken im Source verwendet, einen passenden Eintrag für die Unit-Gültigkeitsbereichsnamen braucht - obwohl das eigentliche Projekt diese gar nicht benötigen würde. Dummerweise kann das aber die Compilierzeiten und das CodeInsight verlangsamen.

Das versteh ich jetzt so, dass ich diese Verlangsamung umgehen könnte, wenn ich sämtlich Uses-Listen mit den 'neuen' Unit-Präfixe ergänzen würde? Brr... Gerade beim Synedit eine Sysiphus-Arbeit, auch wnn ich mit einigen wenigen Highlitern auskomme(Pascal,HTML, CSS und Javascript ).

Gruss
Delbor

Uwe Raabe 18. Sep 2019 12:07

AW: Immer Ärger... Nö, nicht mit Harry,sondern dem Synedit...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Delbor (Beitrag 1446852)
Brr... Gerade beim Synedit eine Sysiphus-Arbeit

Nicht, wenn man das angehängte Tool benutzt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 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