![]() |
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. |
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. |
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. |
AW: Unit scope names zicken rum
Zitat:
|
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. |
AW: Unit scope names zicken rum
Rechte Maustaste > Find Declaration?
|
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... |
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? |
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. |
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. |
AW: Unit scope names zicken rum
Zitat:
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