Entwickler-Ecke

Sonstiges (Delphi) - Muss ich Variablen initialisieren?


NeWsOfTzzz - Di 26.10.04 01:27
Titel: Muss ich Variablen initialisieren?
Ich war früher begeisteter C++ Programmierer und habe Delphi nie richtig gelern ^^. Ist aber alles ziemlich gleich, aber jetzt ne GANZ wichtige Frage:
Bei C++ zeigte eine neue gemachte Variable auf einen zufälligen Speicherbereich, in den meisten Fällen war das 0 (bei integer) aber auch manchmal was anderes. Also musste man immer erst hingehen und Variable=0; machen, ist das bei Delphi auch so? Wenn nicht kann ich mir die hundertfachen Nullzuweisungen ja sparen...


Sprint - Di 26.10.04 01:39

Das kann man so pauschal nicht sagen. Das kommt auf deinen Code an, den du schreibst.
Hier mal ein Beispiel wo du sehen kannst, das lokale Variablen nicht gleich null sind.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  MyGlobalValue: Integer;

function GetValue(Value: Integer): Integer;
begin
  Result := Value;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  MyLocalValue: Integer;
begin
  ShowMessage(IntToStr(GetValue(MyGlobalValue)));
  ShowMessage(IntToStr(GetValue(MyLocalValue)));
end;


NeWsOfTzzz - Di 26.10.04 01:44

Und was für ne Verarsche ist das jetzt mit GetValue? ...
ps: [Warnung] Main.pas(176): Variable 'test' wurde wahrscheinlich nicht Initialisiert
Ok dann doch alles initialisieren.. hätte doch mal nen Compiler sein können der für mich initialisiert aber NEIN natürlich nicht wer denkt denn sowas O.o


Sprint - Di 26.10.04 01:52

NeWsOfTzzz hat folgendes geschrieben:
Und was für ne Verarsche ist das jetzt mit GetValue? ...

Das soll dir nur was zeigen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  MyGlobalCounter: Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyLocalCounter: Integer;
begin
  Inc(MyLocalCounter);
  ShowMessage(IntToStr(MyLocalCounter));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Inc(MyGlobalCounter);
  ShowMessage(IntToStr(MyGlobalCounter));
end;


Delete - Di 26.10.04 02:09

NeWsOfTzzz hat folgendes geschrieben:
Und was für ne Verarsche ist das jetzt mit GetValue? ...

Meinst du das ist der richtige Umgangston in einem Forum, in dem man Hilfe erwartet?

Zitat:

ps: [Warnung] Main.pas(176): Variable 'test' wurde wahrscheinlich nicht Initialisiert
Ok dann doch alles initialisieren.. hätte doch mal nen Compiler sein können der für mich initialisiert aber NEIN natürlich nicht wer denkt denn sowas O.o

Generell gilt, dass loakle Variablen nicht initialisiert werden globale Variablen und private Felder einer Klasse aber schon.


NeWsOfTzzz - Di 26.10.04 02:44

var int:integer
int=getvalue(int)... das mein ich mit verarsche ^^ war ausserdem net böse gemeint


Christian S. - Di 26.10.04 08:47

NeWsOfTzzz hat folgendes geschrieben:
var int:integer
int=getvalue(int)... das mein ich mit verarsche ^^ war ausserdem net böse gemeint
Trotzdem möchten wir einen solchen Umgangston hier nicht haben! :mahn: