![]() |
STRING könnte undefiniert sein.
Delphi-Quellcode:
function TMyObject.MyInteger: Integer;
begin end; function TMyObject.MyString: string; begin end; Mein Compiler warnt für die Integer-Funktion, dass der Resultwert undefiniert sein könnte, aber nicht für die String-Funktion. Ist das ein Bug? Bei Euch reproduzierbar? |
AW: STRING könnte undefiniert sein.
Interfaces z.B. auch. Ist nun mal so. Liest doch eh keiner die Compiler-Warnungen ;-)
![]() |
AW: STRING könnte undefiniert sein.
Zitat:
|
AW: STRING könnte undefiniert sein.
Zitat:
|
AW: STRING könnte undefiniert sein.
Meine bisherige praktische Erfahrung:
Ein String, dem man nix zuweist ist ein Leerstring, hat also einen definierten Inhalt. Bei 'ner Zahl kann es irgendeine Zahl sein, die in den entsprechenden Typ reinpasst (meistens 0, aber nicht immer). Und die Compilerwarnungen zu den nicht sinnvoll belegten Variabeln ... lese ich und behebe diese Fehler, sofern sie aus meinen eigenen Routinen kommen. Bei fremden Source lasse ich die Finger davon, es sei denn, es ist mit einer Fehlfunktion zu rechnen. Und Delphi 7 meckert auch nur bei der Integerfunktion, die Stringfunktion ist wohl "egal". |
AW: STRING könnte undefiniert sein.
Alle gemanageten Typen sind immer initialisiert, da die automatische Speicherverwaltung sonst nicht funktionieren kann.
ABER, hier ist es nicht so initialisiert, wie es dir gefallen würde. Delphi implementiert dein
Delphi-Quellcode:
intern so
function TMyObject.MyString: string;
Delphi-Quellcode:
procedure TMyObject.MyString(var Result: string); // als letztes Parameter
und das eribt was Schönes, wenn diese Variable schon vorher durch was Anderes gefüllt/wiederverwendet wurde. :twisted: Zitat:
|
AW: STRING könnte undefiniert sein.
Zitat:
Zitat:
Meine Regel ist: Wenn der Compiler meckert, dass was undefiniert sein könnte, dann hat er recht und ich habe das zu korrigieren. Ohne Wenn und Aber. Und wenn er nicht meckert, habe ich gefälligst selbst aufzupassen ;-) |
AW: STRING könnte undefiniert sein.
Jupp, das was angemeckert wird, ist meistens falsch.
Zusätzlich wird "Vieles" nicht angemeckert, obwohl es potentiell falsch sein kann/ist. Und selten wird was angemeckert, obwohl es richtig ist. Lokale Variablen sind nicht initialisiert, abgesehn gemanagte Typen. Globales und Klassenfelder sind immer initialisiert. Thread-Lokales ist initialisiert, wird aber nicht finalisiert. Und was in Pointern liegt, da ist der Entwickler dran Schuld. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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 by Thomas Breitkreuz