Home » Tutorials » Programmierkonzepte » Fehlermeldungen

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.