Fehlermeldungen
Warnungen – Langsam wirds wichtig
[Pascal Warnung] Unit1.pas(42): W1036 Variable 'i' ist möglicherweise nicht initialisiert worden
Lokale Variablen werden in Delphi im Allgemeinen(Strings z.B. bilden hier eine Ausnahme) nicht vorinitialisiert, d.h. bevor man ihnen einen Wert zuweist, ist ihr Inhalt undefiniert. Wird nun eine solche Variable ausgelesen bzw. verwendet, kann dies zu unerwünschtem Verhalten führen. Das ‚möglicherweise‘ deutet darauf hin, dass in manchen Fällen der Wert undefiniert sein kann. Beispiel:
begin if Anzahl < Min then begin Wert := Min; end else if Anzahl > Max then begin Wert := Max; end; ShowMessage(IntToStr(Wert)); end;
Ist Anzahl weder kleiner als Min, noch größer als Max ist, so ist Wert undefiniert. Und weil das mit Sicherheit nicht im Sinne des Erfinders ist, meldet sich Delphi mit einer Warnmeldung…
Ganz ähnlich ist es mit
[Pascal Warnung] Unit1.pas(42): W1035 Rückgabewert der Funktion 'Funktion' könnte undefiniert sein
Hier ist es eben der Rückgabewert der Funktion, der möglicherweise undefiniert ist…
Erwähnenswert ist vielleicht noch folgendes:
[Pascal Warnung] Unit1.pas(42): W1005 Unit 'ShellCtrls' ist plattformspezifisch
Diese Meldung ist… fast möchte ich sagen: historisch bedingt. Der Hintergrund ist folgender: Mit Delphi6 und Kylix führte Borland die CLX(Component Library for Cross(X)-Platform Development) ein. Damit sollte es möglich sein mit demselben Code Programme für Windows und Linux zu kompilieren. Units, die jedoch plattformgebunden waren bzw. sind, d.h. die z.B. nur in einer Windows-Umgebung Sinn machen, enthalten eine bestimmte Direktive(platform), die diese Warnmeldung erzeugt. Da die CLX und Kylix nicht mehr weiterentwickelt werden, hat diese Warnmeldung meist keine Bedeutung mehr(nur noch für die, die Kylix einsetzen) und kann deshalb ignoriert werden.