![]() |
Variable beim Programmstart definieren
Hallo ihr Hilfreichen Geister,
ich hab in meinem Programm folgende Zeile:
Delphi-Quellcode:
Ich hab diesen Scheißdreck, weil die Variable beim Programmstart ja nicht definiert ist.
if (Richtung<>1) and (Richtung<>3) and (Richtung<>4) and (Richtung<>2) and (Richtung<>6) then
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 |
Re: Variable beim Programmstart definieren
Delphi-Quellcode:
NAchtrag: oder halt im OnCreate der Form.
var
Form1: TForm1; Richtung: integer = 2; implementation {$R *.dfm} |
Re: Variable beim Programmstart definieren
du kannst alle globalen variablen direkt bei der initialisierung durch z.B.
Delphi-Quellcode:
setzen
var
str : string = 'test'; i : intger = 0; |
Re: Variable beim Programmstart definieren
da war wohl jemand schneller
|
Re: Variable beim Programmstart definieren
Hai herges,
ich schreibe mit für solche Sachen immer eine Procedure.
Delphi-Quellcode:
In dem Form.Create Ereigniss rufe ich dann als erstes diese Procedure auf.
procedure TMyForm.VarInit;
begin var1 := 1; var2 := 'Hallo'; . . end; |
Re: Variable beim Programmstart definieren
aber wieso? du musst die variablen doch sowieso global deklarieren, wieso dann den umweg über die procedure?
synonym |
Re: Variable beim Programmstart definieren
Zitat:
Zugegeben; es ist am anfang etwas mehr tipparbeit. Aber später kann es sich gelohnt haben. Zitat:
|
Re: Variable beim Programmstart definieren
Danke, werde ich gleich mal ausprobieren.
|
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... |
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) 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 |
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. |
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:
umsetzen würde. Geht aber, glaub ich, nicht.
var x: integer = 10
Mit dem entsprechenden Compilerschalter kann man zumindest bis Delphi 9 noch
Delphi-Quellcode:
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.
const x: integer = 10
|
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