Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi der Linker entfernt benötigten Code (https://www.delphipraxis.net/94373-der-linker-entfernt-benoetigten-code.html)

kalmi01 20. Jun 2007 16:11


der Linker entfernt benötigten Code
 
Mein Prog zickt auf einmal rum und ich weiss nicht warum ?
Also hab ich mal angefangen zu debuggen.

Da meint Delphi doch bei diesem Code:
Delphi-Quellcode:
with RFC
do begin
     if RadioButton1.Checked
     then I_MROWS := StrToInt('0' + ExtractInt(Edit13.Text))
     else I_MROWS := 0;
tatsächlich:
Die aufzurufende Funktion GetI_MROWS wurde vom Linker entfernt
Nicht, das ich was gegen künstliche Intelligenz habe, aber in diesem Fall iss es ja extrem dumm.

Bitte Ihr weisen Wissenden, sagt mir den Zauberspruch, mit dem ich Delphi wieder "korrekt Kompilieren" mache.

mkinzler 20. Jun 2007 16:16

Re: der Linker entfernt benötigten Code
 
Wo rufst du den die Funktion auf?

kalmi01 20. Jun 2007 16:19

Re: der Linker entfernt benötigten Code
 
Zitat:

Zitat von mkinzler
Wo rufst du den die Funktion auf?

I_MROWS ist ein
Delphi-Quellcode:
property I_MROWS: Integer read GetI_MROWS write SetI_MROWS;

Apollonius 20. Jun 2007 16:21

Re: der Linker entfernt benötigten Code
 
Aber in deinem Fall wird doch nur geschrieben.

Luckie 20. Jun 2007 16:24

Re: der Linker entfernt benötigten Code
 
Bei einer Zuweisung wird logischerweise der Setter aufgerufen und nicht der Getter.

kalmi01 20. Jun 2007 16:28

Re: der Linker entfernt benötigten Code
 
Zitat:

Zitat von Apollonius
Aber in deinem Fall wird doch nur geschrieben.

Ja und ?
Was soll mir das jetzt sagen :gruebel:
Diese Aussage versteh ich jetzt nicht so ganz.

Das ich hier nur die Stelle poste, wo geschrieben wird, bedeutet ja nicht, das auch woanders gelesen wird.
Aber hast im Prinzip ja recht :zwinker:

sirius 20. Jun 2007 16:36

Re: der Linker entfernt benötigten Code
 
Du hast nicht zufällig den Geltungsbereich von Variablen (insebesondere der Variable RFC) geändert (Klasseneigenschafft <--> lokale Variable <--> globale Variable)

Ein anderer Fehler fällt mir nicht ein.

shmia 20. Jun 2007 17:51

Re: der Linker entfernt benötigten Code
 
Solange du dein Programm in der IDE debuggen möchtest solltest du die Compiler-Optimierungen abschalten (Alles Erzeugen nicht vergessen!).
Wenn du dein Programm weitergeben möchtest, dann die Optimierung wieder anschalten.

kalmi01 20. Jun 2007 18:20

Re: der Linker entfernt benötigten Code
 
Zitat:

Zitat von shmia
Solange du dein Programm in der IDE debuggen möchtest solltest du die Compiler-Optimierungen abschalten

Das hab ich eigentlich noch nie gemacht.
Bisher liess sich auch alles in der IDE debuggen.

Morgen stelle ich mal alle Optimierungen aus, mal sehen wie es dann aussieht.

Aber eigentlich dürfte in der IDE der Linker garnicht so brutal aufräumen, oder ?
Wie soll man denn debuggen, wenn ungenutzte Getter gekillt werden.
Ungenutze Function/Procedure bleiben doch auch mit dem Hinweis erhalten, dass sie nicht verwendet werden.

Da an der gleichen Code-Stelle noch andere Properties gesetzt werden und bei denen das Debuggen sauber funktioniert, glaube ich, dass das Prob irgendwo anders liegt.

Habe aber im Moment keine Idee wo, da dieses Code-Segment schon länger nicht mehr angefasst wurde und in einer eigenen Unit mit eigenen Klassen liegt.

Habe sogar schon mal alle DCU's gelöscht, leider ohne Erfolg.

Muetze1 20. Jun 2007 23:40

Re: der Linker entfernt benötigten Code
 
Zitat:

Zitat von kalmi01
Ungenutze Function/Procedure bleiben doch auch mit dem Hinweis erhalten, dass sie nicht verwendet werden.

Nein, nur wenn die Optimierung ausgeschaltet ist. Wenn diese aktiv ist, dann entfernt er unbenutzte und gibt dir dazu einen Hinweis...


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