![]() |
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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