AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bei der Deklaration einer Variable einen Wert definieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bei der Deklaration einer Variable einen Wert definieren

Ein Thema von Delphi-Neuling · begonnen am 7. Aug 2008 · letzter Beitrag vom 9. Aug 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 12:45
Zitat von alex517:
Zitat von Apollonius:
Das ist dann aber keine lokale Variable mehr.
sondern?
Das ist eine Konstante, die du mittels Compiler-Switch zum Beschreiben zweckentfremdest
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 13:38
Zitat von alex517:
Ich nutze das z.B. um sicherzustellen, dass eine Procedure/Funktion nicht rekursiv aufgerufen wird.

alex
Edit: War Käse...
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 13:39
Zitat von alex517:
Zitat von Apollonius:
Das ist dann aber keine lokale Variable mehr.
sondern?
In C gibt es so etwas (ähnliches) und nennt sich statische Variable.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#14

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 14:38
oh man, hätte ich bloß nichts gesagt..

Zitat von alex517:
Zitat von Apollonius:
Das ist dann aber keine lokale Variable mehr.
sondern?
Mein "sondern" bezog sich auf Apollonius Aussage das dieses "Gebilde" nicht lokal sein soll.
Das es per Definition eine veränderbare Konstante ist, darauf habe ich ja selbst hingewiesen.

Zitat von himitsu:
Dann doch lieber globale Variablen (innerhalb des Implementation-Blocks haben sie auch keine Auswirkungen außerhalb der Unit)
Und mit passenden Variablennamen kommt man auch sonst mit nichts in Konflikte.
Da finde ich meine Variante sinnvoller, die Variable(Konstante) wird genau dort definiert wo sie
hingehört und verwendet wird.

Zitat von Luckie:
So etwas zu nutzen halte ich übrigens für schlechten Stil.
Warum? Wenn ich Konstanten in dieser Form definiere,
Delphi-Quellcode:
const
  cfgFarbe: TColor = clRed;
dann mache ich das genau aus dem Grund, diese später ändern zu können.


Zitat von himitsu:
So wären außerdem alle Konstantan davon betroffen,
was einige Nachteile mit sich bringen kann
Welche Nachteile?
"Richtige" Konstanten
  cFehlerColor = clRed; können nicht verändert werden.

alex

Edit: Mit so vielen Leuten auf einmal habe ich mich ja noch nie angelegt.
Fehlt mir nur noch Hagens Standpauke.
Alexander
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 15:46
Deine zuweisbaren typisierten Konstanten behalten ihren Wert, nachdem die Routine verlassen wurde. Außerdem gibt es nette Effekte, falls die Routine sich irgendwann einmal selbst aufruft, da dann beide die gleiche "Variable" verändern.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#16

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 15:57
Zitat von Apollonius:
Deine zuweisbaren typisierten Konstanten behalten ihren Wert, nachdem die Routine verlassen wurde. ..
Genau das nutze ich aus, damit dieses
Zitat von Apollonius:
Außerdem gibt es nette Effekte, falls die Routine sich irgendwann einmal selbst aufruft, ..
nicht passiert.

Mein Beispiel zeigt ja genau die Verhinderung des rekursiven Aufrufs.

alex
Alexander
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 16:03
Ja. Ich wollte nur feststellen, dass diese statischen Variablen, wie sie in C heißen, eine ganz andere Funktion als lokale Variablen erfüllen. Damit sind sie für den Threadersteller keine Lösung.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 18:55
Konstanten sind aber Konstanten und keine veränderlichen Variablen.
außerdem ist des {$J+} / {$WRITEABLECONST ON} mehr zur Abwärtskompatibilität vorhanden.

Obwohl ich zwar auch gern mal einige "Fehler" ausnutze ... irgendwo muß man doch nicht gleich alles machen, nur weil es geht?


Vorallem da durch eine unbedachte Verwendung dieser Compilerschalter sich schnell mal die Adressen auf die "Konstanten"-Inhalte ändern.


Zitat von alex517:
die Variable(Konstante) wird genau dort definiert wo sie
hingehört und verwendet wird.
mach ich genauso, da ich sowas schließlich direkt vor der Funktion definiere
$2B or not $2B
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#19

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 22:36
Zitat von himitsu:
Konstanten sind aber Konstanten und keine veränderlichen Variablen.
Genau! Und deshalb sind typed constants auch keine Konstanten! Auch sind veränderliche Variablen ein Pleonasmus bzw. wären unveränderliche Variablen ziemlich sinnlos.

Zitat von himitsu:
Vorallem da durch eine unbedachte Verwendung dieser Compilerschalter sich schnell mal die Adressen auf die "Konstanten"-Inhalte ändern.
Völlig unverständlich!? Wieso sollten sich die Adressen ändern, und wenn, was wäre daran so verwerflich? Wenn Du ein paar neue Variable definierst, ändern sich doch auch eventuell Adressen von schon vorhandenen?

Zitat von himitsu:
mach ich genauso, da ich sowas schließlich direkt vor der Funktion definiere :angel2:
Leider sind diese Konstrukte dann allerdings nicht mehr lokal!

Das alles wäre halbwegs akzeptabel, wenn die Delphi-Weiterentwickler nicht in ihrer unendlichen Weisheit beschlossen hätten, daß innerhalb von Prozeduren/Funktionen etc.
var myvar: mytype = myvalue; fehlerhaft ist, während
const myvar: mytype = myvalue; erlaubt ist.

Gruß Gammatester
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 8. Aug 2008, 22:40
Dass dieses Konstrukt bei lokalen Variablen und Felder nicht funktioniert, finde ich absolut richtig. Bei globalen Variablen und Konstanten wird der Startwert einfach in einem Abschnitt des PE-Formats angegeben. Bei lokalen Variablen geht das nicht, man muss erst die Variable auf dem Stack allozieren und dann noch einen Wert hineinschreiben, was auf das selbe wie die explizite Zuweisung hinausläuft. Die Initialisierungs-Syntax würde dies verwischen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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