AW: TStringList x64 nicht nil
Zitat:
Als ich das Projekt übernommen hatte, hatte ich über 600 Warungen / Hinweise. Da findest du die Wichtigen nicht! :? 2 Wochen, incl. Umbau, hat es gedauert, das auf 0 Fehler zu kürzen. Da kann man auch solche Warnungen erkennen. [/OT] |
AW: TStringList x64 nicht nil
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
|
AW: TStringList x64 nicht nil
Die Sache ist die: lokale Variablen sind nur Speicherbereiche auf dem Stack. Der mag vielleicht bei Programmstart mit 0en initialisiert sein, aber sobald mal ein bisschen Code gelaufen ist liegen an den Stack-Adressen alle möglichen Werte wie alte Rücksprungadressen oder Parameter für Funktionsaufrufe. Wenn eine lokale Variable deklariert wird, wird ihr bloß ein entsprechend großer Bereich auf dem grad verfügbaren Stack zugewiesen. Wenn der Bereich zuvor schon genutzt wurde, dann steht an dieser Speicherstelle mit großer Wahrscheinlichkeit keine 0.
Das kann also grundsätzlich noch nie geklappt haben (außer durch Glück oder vllt. beim Debuggen). |
AW: TStringList x64 nicht nil
Zitat:
außer bei globalen Variablen oder als Objektfelder, aber die sind auch in x64 immer mit 0 initialisiert. |
AW: TStringList x64 nicht nil
Zitat:
|
AW: TStringList x64 nicht nil
Wie ist denn OpenFile deklariert? Ist List evtl. ein var Parameter? Wenn ja, warnt der Compiler nicht.
|
AW: TStringList x64 nicht nil
Zitat:
Delphi-Quellcode:
OpenFile(ip_FileName: AnsiString; var List: TStringList)
|
AW: TStringList x64 nicht nil
Dann gibts natürlich keine Warnung, weil der Compiler davon ausgeht, dass die Liste ggf. in der Funktion angelegt und über den Var-Parameter zurückgegeben wird.
Falls du die Liste in der Funktion nicht erstellst oder komplett neu zuweist ist der var Parameter falsch und sollte weg. |
AW: TStringList x64 nicht nil
Zitat:
Es hat schon einen Grund warum beim initialisieren meiner Klasse die Liste NIL sein muss. Sie wird erst gefüllt wenn OpenFile von außerhalb meiner Klasse aufgerufen wird. Darum ging es aber auch nicht sondern um die Frage warum in x64 nicht NIL und unter x86 = NIL ohne List zu initialisieren. Denke die korrekte Antwort kommt von @hoika. Damit ist die Frage für mich beantwortet. Zitat:
Zitat:
Nur in meinem Fall gibt es keine Warnung sagte ich schon. Warum wurde auch schon geklärt. |
AW: TStringList x64 nicht nil
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 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