Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verhalten einer localen Variable? (https://www.delphipraxis.net/145859-verhalten-einer-localen-variable.html)

AlexII 9. Jan 2010 16:15


Verhalten einer localen Variable?
 
Ich habe in einer procedure eine Variable deklariert, wenn man die procedure ausführt wird dieser ein Wert zugewiesen.

Wenn ich diese procedure später wieder aufrufe steht mir der Wert der Variable zu Verfügung oder muss man ihr immer wieder den Wert zuweisen? :gruebel: Eine globale Variable z.B. behält den Wert solange das Programm läuft und wie ist es mit der lokalen?

mkinzler 9. Jan 2010 16:17

Re: Verhalten einer localen Variable?
 
Sie existiert nur während der Laufzeit der Prozedur

AlexII 9. Jan 2010 16:18

Re: Verhalten einer localen Variable?
 
Ok danke :thumb: Das wollte ich wissen :-D

Klaus01 9. Jan 2010 16:19

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von AlexII
Eine globale Variable z.B. behält den Wert solange das Programm läuft und wie ist es mit der lokalen?

Wie der Name schon sagt ist diese Variable lokal,
sie gilt solange wie die Prozedure läuft.
Wird die Prozedur wieder aufgerufen ist der Wert der lokalen
Variable wieder undefiniert.

Vielleicht der Prozedur einen Parameter mitgeben
und diesen dann in der Prozedur nutzen.

Grüße
Klaus

AlexII 9. Jan 2010 16:36

Re: Verhalten einer localen Variable?
 
Ich hab einfach eine globale genommen und das ist ok so. :thumb:

Aber, dass der Wert dann undefiniert ist, ist sehr gut zu wissen.

Jens Hartmann 9. Jan 2010 16:46

Re: Verhalten einer localen Variable?
 
Hallo,

das mit der globalen Var. ist zwar eine Lösung, aber denk daran das die Globale Var. die gesamte Laufzeit von deinem Programm speicher belegt. Mit globalen Var. sollte man vorsichtig sein. Nur wenn wirklich Notwendig.

Gruß Jens

Luckie 9. Jan 2010 16:57

Re: Verhalten einer localen Variable?
 
Das Problem ist weniger der Speicher, sondern viel mehr die Übersicht im Quellcode.

SirThornberry 9. Jan 2010 17:27

Re: Verhalten einer localen Variable?
 
Gibt es in neueren Delphiversionen vielleicht ein äquivalent zu static Variablen aus C?
Damit wäre die Variable zwar weiterhin global (was den Speicher betrifft) aber die Sichtbarkeit wäre auf die Funktion begrenzt.

hoika 9. Jan 2010 18:14

Re: Verhalten einer localen Variable?
 
Hallo,

heisst dann class var
Im Link danach suchen.

1


Heiko

SirThornberry 9. Jan 2010 18:23

Re: Verhalten einer localen Variable?
 
ist nicht ganz das gleiche. Die Static Variable wird bei C ja lokal declariert wo hingegen die "class var" in der Klasse declariert wird und somit wohl auch von allen Klassenfunktionen aus erreichbar ist.

Blackheart 9. Jan 2010 18:23

Re: Verhalten einer localen Variable?
 
Fast 800 Beiträge und dann "eine" Frage zu den Grundlagen. ?!

mkinzler 9. Jan 2010 18:24

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von Blackheart
Fast 800 Beiträge und dann "eine" Frage zu den Grundlagen. ?!

Was hat das mit der Anzahl der Beiträgen zu tun?

Blackheart 9. Jan 2010 18:41

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von mkinzler
Zitat:

Zitat von Blackheart
Fast 800 Beiträge und dann "eine" Frage zu den Grundlagen. ?!

Was hat das mit der Anzahl der Beiträgen zu tun?

Vieleicht das man zuviel Zeit hat anstatt sich mit den Grundlagen zu beschäftigen ? :wink:

AlexII 9. Jan 2010 18:48

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von Blackheart
Fast 800 Beiträge und dann "eine" Frage zu den Grundlagen. ?!

Hatte Delphi in der Schule und habe ein dickes Delphi Buch durch genommen, aber das stand nicht drin, sonst hätte ich diese Frage nicht gestellt. Das schein wohl so einfach zu sein, dass keiner darüber schreibt.

Blackheart 9. Jan 2010 19:13

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von AlexII
Zitat:

Zitat von Blackheart
Fast 800 Beiträge und dann "eine" Frage zu den Grundlagen. ?!

Hatte Delphi in der Schule und habe ein dickes Delphi Buch durch genommen, aber das stand nicht drin, sonst hätte ich diese Frage nicht gestellt. Das schein wohl so einfach zu sein, dass keiner darüber schreibt.

Hier noch ein dickeres Buch zum schmöckern.

JamesTKirk 9. Jan 2010 19:32

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von SirThornberry
Gibt es in neueren Delphiversionen vielleicht ein äquivalent zu static Variablen aus C?
Damit wäre die Variable zwar weiterhin global (was den Speicher betrifft) aber die Sichtbarkeit wäre auf die Funktion begrenzt.

Es gibt seit langem etwas ähnliches in Delphi. Um genau zu sein stammt es noch aus TP Zeiten: typisierte Konstanten. Um mir die Erklärung zu sparen, siehe dieser Thread.

Gruß,
Sven

Elvis 9. Jan 2010 20:08

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von JamesTKirk
Es gibt seit langem etwas ähnliches in Delphi. Um genau zu sein stammt es noch aus TP Zeiten: typisierte Konstanten.

AFAIR, sind "assignable typed constants" aber standardmäßig deaktiviert.
IMO zu gutem Grund, das ist pervers. Wer sowas geil findet, frisst auch kleine Kinder.
Es wäre okay, wenn es dafür ein explizites Feature gäbe. Aber das ist nur ein Bug, der in TP existierte und CG hat aus Mangel an Rückrat diesen Bug bis heute durchgehen lassen.

Es ist nicht ausgeschlossen, dass in zukünftigen Versionen das gleiche passiert wie beim Missbrauch von "with" um Record properties zu verändern, was nämlich seit neueren Versionen von Delphi nicht mehr geht.

JamesTKirk 9. Jan 2010 20:51

Re: Verhalten einer localen Variable?
 
Zitat:

Zitat von Elvis
Aber das ist nur ein Bug, der in TP existierte und CG hat aus Mangel an Rückrat diesen Bug bis heute durchgehen lassen.

Unabhängig davon, ob das Schreiben von Konstanen nun gut ist oder schlecht, so habe ich bezüglich "Bug" eine andere Sicht der Dinge. Die Hilfe in Turbo Pascal 6 (zum Glück hatte ich das noch irgendwo rumliegen :mrgreen: ) schreibt zum Thema typisierte Konstanten nämlich:

Zitat:

Zitat von TP 6.0 Hilfe
Auf diese Weise deklarierte Bezeichner können vom Programm wie Variablen verwendet werden.

Das spricht sehr dagegen, dass sie aus Borlands Sicht als Bug behandelt wurden.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz