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 3 von 3     123   
gammatester

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

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 9. Aug 2008, 00:15
Zitat von Apollonius:
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.
Ach das ist ja interessant:) Ich glaube, hier werden die ganze Zeit zwei Konzepte verwechselt bzw. vermischt.

Lokal vs. global hat vom Prinzip her nichts mit Lebensdauer, Initialisierung usw. zu tun. Es gibt ja auch lokale Konstanten und Funktionen? Soll das auch nicht mehr funktionieren? Lokal bedeutet, das eine Entität halt nur innerhalb einer Funktion sichtbar ist und nicht in der ganzen Unit bzw. im Programm.

Außerdem: wie eine lokale initialisierte Variable "alloziert" und "belegt" wird, sollte nicht in der Sprache festgelegt werden, das ist halt Implementation durch die Kompilerentwickler, und wird auch jetzt schon eifrig verwendet: siehe Schleifen-"Variable", die nicht auf dem Stack sondern in Registern sind; und diese Register können dekrementiert werden, obwohl die Variable inkrementiert wird.

Außerdem: Du hast wohl auch nichts dagegen, wenn bei Ansistrings oder Referenzcounted-Konstrukte "Die Initialisierungs-Syntax würde dies verwischen" würde.

Also versucht nicht den Leuten, die bestimmte Konstruktion verwenden wollen, diese auszureden, ihr müßt sie ja nicht verwenden.

Und das Pseudoargument, man muß nicht alles machen, was geht, fällt hier aus historischen Gründen auf den Urheber zurück, der "var =" benutzt.


Gruß Gammatester
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Bei der Deklaration einer Variable einen Wert definieren

  Alt 9. Aug 2008, 00:26
schau dir alleine mal die Speicherbereiche an, also wo was abgelegt wird (des is wohl die am Einfachsten sichtare Auswirkung)
Delphi-Quellcode:
const
  A = 'xyz';
  {$WRITEABLECONST ON}
  X: String = 'abc';
  {$WRITEABLECONST OFF}
  Y: String = 'bcd';
var
  Z: String;
begin
  Z := 'cde';
  Caption := Format('%x %x %x %x', [Integer(@X[1]), Integer(@Y[1]), Integer(@Z[1]), Integer(@A[1])]);
WritableConsts sind in Wirklichkeit auch nur Varialen und reagieren (bis auf gewisse Unterschiede) auch genauso.

Vorallem im ASM-Bereich wirst'e schnell merken, daß es einen großen Unterschied zwischen Konstanten, änderbaren Konstanten und Variablen gibt ... also z.B. wo/wie der Wert einer Integers abgelegt wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 13:04 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