![]() |
Function to be called, ... was eliminated by linker
Hoy,
ich hab mal ne Frage an euch. Und zwar hab ich das Problem dass ich hier eine TList habe, in diese über Strg+F7 aber nicht reinschauen kann. Wenn ich versuche List[0] aufzurufen bekomme ich folgende Fehlermeldung zurück: Zitat:
Gibt es irgendeine Möglichkeit das abzuschalten, dass der Linker .GetItem eliminiert weil GetItem als inline gekennzeichnet ist? Vielen Dank schon mal im Voraus. Viele Grüße Maliko |
AW: Function to be called, ... was eliminated by linker
Ich habe es nicht getestet, aber wenn du an einer Stelle {$INLINE OFF} verwendest, an der du darauf zugreifst, sollte der Compiler den Aufruf nicht inline umsetzen und somit die Funktion zur Verfügung stehen.
|
AW: Function to be called, ... was eliminated by linker
An der Stelle, wo dein Debugger sich grade befindet, ist die gewünschte Funktion nicht verfügbar, z.B. weil sie "dort" garnicht verwendet wurde, weswegen der Compiler dort die nötigen Funktionen+Debuginos nicht eingebunden hat.
Lösung: Die Funktion, welche man im Debugger braucht, auch im Code aufrufen. Und sei es innerhalb eines IF-THEH, was zur Laufzeit mit False übersprungen wird. kein
Delphi-Quellcode:
, welches der Compiler direkt auflöst und wo er dann den Inhalt nach dem THEN weglassen kann, weil es ja "niemals" genutzt werden würde.
if False then
In deinem Fall wird über das Inline diese Funktion ja "weggelassen" und stattdessen direkt der Funktionsinhalt eingebunden. Daher ist diese Funktion auch nicht im Code und kann auch nicht vom Debugger genutzt werden. Zitat:
[edit] Wie schon gesagt wurde, das Inline deaktivieren. Alternativ oben die Unit weglassen, die für das was in der Funktion drin ist, damit das Inline nicht ausgeführt werden kann. |
AW: Function to be called, ... was eliminated by linker
Vielleicht kannst du mir da genauer weiterhelfen, da ich zugeben muss, das ich deine Antwort nicht ganz verstehe. Das ist mein Aufruf.
Delphi-Quellcode:
Wenn ich jetzt versuche in FDictFaktura reinzuschauen, dann bekomme ich den Fehler. Rufe ich die Funktion im Debugger direkt auf, dann funktioniert es (was aber scheiße ist, da ja jedes mal die Funktion gecalled wird, was bedeutet, das jedes mal unter umständen dann auch ein DB-Query abgeschossen wird, nur weil man in die entsprechenden Indizes sehen möchte.
Variables.TryGetValue('fakturavon', mVon);
Variables.TryGetValue('fakturabis', mBis); FDictFaktura := TASDateUtils.SplitDateRange(mVon, mBis); |
AW: Function to be called, ... was eliminated by linker
Zitat:
geht nicht:
Delphi-Quellcode:
oder
xxx[i]
Delphi-Quellcode:
xxx.Item[i]
würde gehen:
Delphi-Quellcode:
xxx.List[i]
Ja, für Debugging ist dieses INLINE hier echt blöd. Könntest also das Inline also deaktivieren, oder alternative Funktionen nutzen, welche es "gibt".
Delphi-Quellcode:
, bzw. in den Projektoptionen.
{$INLINE OFF}
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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