Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Teilweise in einer Unit keine blauen Punktte, aber warum? (https://www.delphipraxis.net/214680-teilweise-einer-unit-keine-blauen-punktte-aber-warum.html)

stifflersmom 21. Feb 2024 10:38

Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin moin,

ihc habe hier eine Unit, in der sind die meisten Funktionen, aber nicht alle!, ohne blauen Punkt und ich suche mir einen Wolf, finde aber irgendie nichts.
Bevor jemand fragt: Ja, es wird im Debugmodus kompiliert.

Hat hier jemad soetwas schon mal erlebt und einen Tipp für mich, wo ich suchen soll?


Gruß

Uwe Raabe 21. Feb 2024 10:51

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Die einfachste Ursache ist die Optimierung des Compilers, wenn der Code nicht verwendet wird.

stifflersmom 21. Feb 2024 10:58

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die ist aber nicht aktiv.

himitsu 21. Feb 2024 11:07

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Wie genannt, wird diese Methode überhaupt irgendwo aufgerufen?
Ist diese Methode Private, oder vielleicht Public/Publisched?
Steht denn nichts in den Compilerausgaben? Und wenn ja, wieso beachtest du dass dann nicht?
...

Rauswerfen ganzer ungenutzer Funktionen ist, glaub ich, nicht Angelegenheit der Optimierung.

z.B. im PUBLIC hab ich (standardmäßig) die Funktion auch einkompiliert, inkl. Pünktchen,
aber im PRIVATE ist sie weg und
Delphi-Quellcode:
[DCC Hinweis] Unit1.pas(13): H2219 Das private-Symbol 'Test' wurde deklariert, aber nie verwendet
.

Ersteres könnte noch via RTTI gesucht und indirekt aufgerufen werden (Invoke).
Und PUBLISHED auch über die TypeInfo, z.B. mittels Delphi-Referenz durchsuchenTObject.MethodAddress.
Auch von sonstwo aus, was der Compiler/Linker garnicht wissen kann.

Uwe Raabe 21. Feb 2024 11:14

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Zitat:

Zitat von stifflersmom (Beitrag 1533719)
Die ist aber nicht aktiv.

Das spielt für diese Art Optimierung keine Rolle. Genau genommen ist es auch nicht der Compiler, der den Code weglässt, sondern der Linker. Bei Delphi ist das aber alles in den dcc integriert.

stifflersmom 21. Feb 2024 11:16

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, die hier nicht mit blauen Punkten versehene Funktion wird definitiv aufgerufen.

Erstaunlich finde ich auch, dass die OnCreate Funktion des Datenmoduls nicht aufgerufen wird.
Diese ist aber definitiv zugewiesen.


Der Compiler nennt auch eine Funktion die zwar definiert, aber nicht aufgerufen wird, aber auch wenn ich diese auskommentiere, ändert sich an der "Punkteverteilung" nichts.

stifflersmom 21. Feb 2024 11:23

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Und genau das hat mich jetzt auf die Lösung gebracht...
Tatsächlich ist das DatenModul gar nicht mehr erstellt worden, saublödfer Fehler von mir.
Wieso das gestern noch in der dpr datei vorhanden war und heute nicht mehr, kann ich nicht sagen, aber auf jeden Fall lag der Fehler bei mir.

himitsu 21. Feb 2024 11:24

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Womöglich wurden nicht alle Units DCUs neu kompiliert,
oder die IDE hatte nicht die aktuellen Debuginfos geladen.

-> einmal BuildAll (Erzeugen) und erst dann er weitersuchen, wenn immernoch

PS:
Warum die BaseURL umschreiben, anstatt z.B.
Delphi-Quellcode:
RESTRequest.Location := ROUTE_irgendwas;
?
Und ganz sicher, dass "RESTClient.BaseURL := RESTClient.BaseURL + ..." richtig ist?

stifflersmom 21. Feb 2024 11:43

AW: Teilweise in einer Unit keine blauen Punktte, aber warum?
 
Die BaseURL wird umgeschrieben weil die BaseURL bei der Datev Connect API abhängig ist von dem Fiskaljahr, das angesteuert wird.
Das könnte man bestimmt auch anders gestalten, aber ist mir an der Stelle auch nicht wirklich wichtig.

Und ja, natürlich hast Du Recht das ESTClient.BaseURL := RESTClient.BaseURL nicht richtig ist, aber darum ging es in diese Testfunktion auch gar nicht


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