Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variable beim Programmstart definieren (https://www.delphipraxis.net/16735-variable-beim-programmstart-definieren.html)

herges 22. Feb 2004 16:54


Variable beim Programmstart definieren
 
Hallo ihr Hilfreichen Geister,
ich hab in meinem Programm folgende Zeile:
Delphi-Quellcode:
if (Richtung<>1) and (Richtung<>3) and (Richtung<>4) and (Richtung<>2) and (Richtung<>6) then
Ich hab diesen Scheißdreck, weil die Variable beim Programmstart ja nicht definiert ist.
Und mit dem kann ich nichts anfagen.
Die Variable wird direkt danach gesetzt, außer eine der Bedingungen trifft zu, dann wird die bestehende Variable einmal übernommen und bei dem nächsten Schleifendurchlauf erst wieder gesetzt.

Ich fage mich ob man die Variable irgendwo beim Programmstart setzen kann, z.B. auf 0.
Die Frage ist nur WO?

Danke im Vorraus
herges

Matze 22. Feb 2004 16:56

Re: Variable beim Programmstart definieren
 
Delphi-Quellcode:
var
  Form1: TForm1;
  Richtung: integer = 2;

implementation

{$R *.dfm}
NAchtrag: oder halt im OnCreate der Form.

Synonym 22. Feb 2004 16:57

Re: Variable beim Programmstart definieren
 
du kannst alle globalen variablen direkt bei der initialisierung durch z.B.

Delphi-Quellcode:
var
str : string = 'test';
i : intger = 0;
setzen

Synonym 22. Feb 2004 16:58

Re: Variable beim Programmstart definieren
 
da war wohl jemand schneller

Sharky 22. Feb 2004 17:01

Re: Variable beim Programmstart definieren
 
Hai herges,

ich schreibe mit für solche Sachen immer eine Procedure.

Delphi-Quellcode:
procedure TMyForm.VarInit;
begin
 var1 := 1;
 var2 := 'Hallo';
 .
 .
end;
In dem Form.Create Ereigniss rufe ich dann als erstes diese Procedure auf.

Synonym 22. Feb 2004 17:42

Re: Variable beim Programmstart definieren
 
aber wieso? du musst die variablen doch sowieso global deklarieren, wieso dann den umweg über die procedure?


synonym

Sharky 22. Feb 2004 17:45

Re: Variable beim Programmstart definieren
 
Zitat:

Zitat von Synonym
aber wieso?...

Weil ich, wenn es für das Programm notwendig ist, mit einem einzigen Aufruf alle Variablen auf die "Startwerte" setzen kann ohne das Programm neu zu starten.

Zugegeben; es ist am anfang etwas mehr tipparbeit. Aber später kann es sich gelohnt haben.

Zitat:

Zitat von Synonym
...du musst die variablen doch sowieso global deklarieren,..

Warum das denn? Ich habe in meinem Programmen so wenig globale Variablen wie möglich.

herges 23. Feb 2004 08:35

Re: Variable beim Programmstart definieren
 
Danke, werde ich gleich mal ausprobieren.

schwa226 11. Mär 2011 08:56

AW: Variable beim Programmstart definieren
 
Geht das für lokale Vars auch irgendwie?
Oder muss ich in der Prozedur dann erst den Wert zuweisen?

Bei C/C++ geht das ja recht einfach...

himitsu 11. Mär 2011 09:28

AW: Variable beim Programmstart definieren
 
Nein, für Lokal gibt es keine "vordefinierten Variablen".

Viele lokale Variablen werden nichtmal initialisiert. (Globale sind standardmäßig immer 0/nil)

PS: Es gibt auch noch den initialization-Abschnitt der Units, wo man Dinge initialisieren könnte ... wer hätt's gedacht :stupid:

PPS:
Zitat:

Delphi-Quellcode:
if (Richtung<>1) and (Richtung<>3) and (Richtung<>4) and (Richtung<>2) and (Richtung<>6) then

Delphi-Quellcode:
if ((Richtung < 1) or (Richtung > 4)) and (Richtung<>6) then
// oder
if not (Richtung in [1, 3, 4, 2, 6]) then
// oder einfach nur
if Richtung = 0 then

Sir Rufo 11. Mär 2011 09:30

AW: Variable beim Programmstart definieren
 
Ich würde Variablen immer dann initialisieren, wenn das übergeordnete Objekt erzeugt wird.

Eine lokale Variable in einer Procedure/Function beim Start selbiger.
Eine Klassenvariable beim Erzeugen der Klasse.
Eine globale Variable beim Initialisieren der Unit.

idefix2 11. Mär 2011 09:37

AW: Variable beim Programmstart definieren
 
Nachdem lokale Variablen am Stack liegen, können sie nicht von vorneherein initialisiert sein. Da kommst Du um die Zuweisung eines anfangswerts bei jedem Aufruf der Prozedur nicht herum.

Wär natürlich schön, wenn der Compiler trotzdem sowas wie
Delphi-Quellcode:
var x: integer = 10
umsetzen würde. Geht aber, glaub ich, nicht.

Mit dem entsprechenden Compilerschalter kann man zumindest bis Delphi 9 noch
Delphi-Quellcode:
const x: integer = 10
verwenden. Das ist dann keine Konstante, sondern eine lokale statische initialisierte Variable, die ihren Wert auch über Prozeduraufrufe hinweg behält. Was neuere Delphi Versionen daraus machen, weiss ich nicht.

idefix2 11. Mär 2011 09:46

AW: Variable beim Programmstart definieren
 
Delphi-Quellcode:
if (Richtung<>1) and (Richtung<>3) and (Richtung<>4) and (Richtung<>2) and (Richtung<>6) then
.

gescheiter ist auf alle Fälle:

Delphi-Quellcode:
case richtung of
 1,3,4,2,6: ...
 else ...
 end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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-2025 by Thomas Breitkreuz