Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Unit scope names zicken rum (https://www.delphipraxis.net/215521-unit-scope-names-zicken-rum.html)

TurboMagic 19. Jul 2024 12:43

Unit scope names zicken rum
 
Hallo,

ich habe ein in D11.3 geschriebenes FMX Projekt welches ich auf 12.1 umstellen will.
Es benutzt eine Logging Bibliothek von mir in der eine globale Variable "Log" drin ist.

Bisher konnte ich einfach Logging in uses einbinden und im Projekt hinzufügen und
Log.Send(... aufrufen. In 12.1 kennt er es in dem Projekt nur noch, wenn ich das voll
qualifiziere: Logging.Log.Send(...

Warum?

In einem frischen FMX Projekt geht es auch nicht voll qualifiziert.
Was ist in meinem anderen Projekt wo verbogen?
Ich seh's nicht und hab' auch schon versucht das in der Hilfe zu finden.

Uwe Raabe 19. Jul 2024 12:52

AW: Unit scope names zicken rum
 
Wie lautet denn die Fehlermeldung wenn du es nicht qualifizierst?

Übrigens hat ds erstmal gar nichts mit den Unit Scope Names zu tun.

TurboMagic 19. Jul 2024 13:17

AW: Unit scope names zicken rum
 
Die lautet (ErrorInsight): E2018: Record, Objekt oder Klassentyp erforderlich
Er weiß einfach nicht was Log sein soll, weil er gar nicht auf die Idee kommt in die Unit Logging.pas zu schauen.

dummzeuch 19. Jul 2024 13:46

AW: Unit scope names zicken rum
 
Zitat:

Zitat von TurboMagic (Beitrag 1539039)
Die lautet (ErrorInsight): E2018: Record, Objekt oder Klassentyp erforderlich
Er weiß einfach nicht was Log sein soll, weil er gar nicht auf die Idee kommt in die Unit Logging.pas zu schauen.

Nein, der Compiler findet ein Symbol Log irgendwo anders. Vermutlich in einer anderen Unit, die später in der Uses-Liste steht.

TurboMagic 19. Jul 2024 13:54

AW: Unit scope names zicken rum
 
Ok, das sieht also anders aus, aber wenn ich Log und Punkt eintippe bekomme
ich nur nil und not von der COdevervollständigung vorgeschlagen...

...daher glaub' ich noch nicht ganz dran. Aber ich forsche da weiter.

CCRDude 19. Jul 2024 14:00

AW: Unit scope names zicken rum
 
Rechte Maustaste > Find Declaration?

TurboMagic 19. Jul 2024 14:06

AW: Unit scope names zicken rum
 
Rechte Maustaste nicht so ganz, das springt nirgens hin, ich weiß inzwischen aber warum.
Beim drüber fahren mit der Maus zeigt er an wo er das her hat. Ja, ist aus einer der Bibliotheken
der Trial der Komponentensammlung. Da scheint es das zu geben.

=> also doch voll qualifizieren...

TomyN 19. Jul 2024 18:53

AW: Unit scope names zicken rum
 
Log würde ich in der Unit Math vermuten (Logarithmus zur Basis 10 o.ä).
Evtl. ist die jetzt aus irgendeinem Grund eingebunden.
Schon mal an Refactoring (Ändern des Variablennamens) gedacht?

jaenicke 19. Jul 2024 19:31

AW: Unit scope names zicken rum
 
Deshalb halte ich solche globalen Funktionen für keinen guten Programmierstil. Denn man sieht ihnen z.B. ohne den Unitnamen auch nicht an, wo sie herkommen.

Deshalb verwende ich in solch einem Fall Klassenmethoden, sprich TAppLog.Log(...). Dann weiß man, dass die Funktion aus der Klasse kommt und kann den Klassennamen auch nicht aus Versehen weglassen, anders als einen Unitnamen.

himitsu 19. Jul 2024 20:28

AW: Unit scope names zicken rum
 
Im Math.pas des Delphi gibt es kein Log,
dagegen im Math.h des C++Builders schon,
also muß es doch wohl von wo Anders kommen,
aber grundsäzlich ist es ja egal, da das Problem selbst bestehen bleibt
und somit die Aussagen der Vorredner bestätigt.

QuickAndDirty 22. Jul 2024 11:34

AW: Unit scope names zicken rum
 
Zitat:

Zitat von TurboMagic (Beitrag 1539039)
Die lautet (ErrorInsight): E2018: Record, Objekt oder Klassentyp erforderlich
Er weiß einfach nicht was Log sein soll, weil er gar nicht auf die Idee kommt in die Unit Logging.pas zu schauen.

Es gibt in Delphi in den Projektoptionen Unit-Gültigkeitsbereichsnamen...manchmal kommen effekte von da.

Ich hatte mal eine Datei, da funktionierte das navigieren zu deklarationen nicht und auch die Autovervollständigung nicht.
Die pas Datei wurde in Winmerge mit einem Binaryfile icon angezeigt...obwohl es ne text datei war.
Habe dann die datei umbenannt alles oberhalb von "end." im Notepad makriert und in eine neue leere pas Datei mit dem gleichen Namen eingefügt und das "end." eingegeben ...dann ging es wieder..

Das System ist kompliziert und hat komische Effekte.
Vielleicht einfach mal das Projekt neu anlegen.


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