AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Variable Initialization

Ein Thema von Edelfix · begonnen am 11. Aug 2017 · letzter Beitrag vom 11. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2      
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 11:31
Laut Google sind in Delphi globale Variablen immer auf 0/nil initialisiert, lokale aber unintialisiert, also undefined. Darauf verlassen würde ich mich aber nicht.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.918 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 11:38
Laut Google sind in Delphi globale Variablen immer auf 0/nil initialisiert, lokale aber unintialisiert, also undefined. Darauf verlassen würde ich mich aber nicht.
Da kann man sich schon drauf verlassen, das ist auch dokumentiert, einfach mal in die Doku schauen:
http://docwiki.embarcadero.com/RADSt...o/en/Variables
Zitat:
If you do not explicitly initialize a global variable, the compiler initializes it to 0. Object instance data (fields) are also initialized to 0. On the Wiin32 platform, the contents of a local variable are undefined until a value is assigned to them.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 11:41
Was ich meinte ist, wenn das irgendwann mal geändert wird, hat man den Salat.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.918 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 11:53
Wenn etwas so fest dokumentiert ist, vor allem solch eine grundlegende Geschichte, dann kann man schon davon ausgehen, dass das auch so bleibt. Denn bei einer Änderung würden viele Quelltexte nicht mehr funktionieren.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 15:34
Wenn etwas so fest dokumentiert ist, vor allem solch eine grundlegende Geschichte, dann kann man schon davon ausgehen, dass das auch so bleibt. Denn bei einer Änderung würden viele Quelltexte nicht mehr funktionieren.
Du meinst wie bei ARC, Zero based strings usw. usf.?
Uli Gerhardt
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 15:53
Hallo,

Delphi-Quellcode:
  Vorfall_1:= False;
  Vorfall_2:= False;
  Vorfall_2:= False;


procedure Foo;
var
  iLokaleVar: Integer;
begin
  // iLokaleVar:=0; //sicherheitshalber definieren.

  // iLokaleVar ist undefiniert

  if Vorfall_1 then
    iLokaleVar := iLokaleVar + 1; // du kummst hier nich rein
  if Vorfall_2 then
    iLokaleVar := iLokaleVar + 1; // du kummst hier nich rein
  if Vorfall_3 then
    iLokaleVar := iLokaleVar + 1; // du kummst hier nich rein

  Wieso sollte iLokaleVar in dem Fall denn einen wert bekommen haben?
  Der Compiler weiss doch beim Compilieren nicht, was Deine Vorfall-Variablen für einen Wert haben

  if iLokaleVar>0 then
    showmessage('Achtung es gab ein Vorfall!');
end;
Heiko

Geändert von hoika (11. Aug 2017 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.918 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 15:58
Du meinst wie bei ARC, Zero based strings usw. usf.?
Das ist ja der Grund weshalb es beides für Win32 noch nicht gibt... weil es nicht so leicht ist das zu implementieren ohne bestehenden Code zu brechen.

Eine neue Plattform ist etwas anderes. Da steht ja dann ohnehin mindestens eine Code Review an, wenn man darauf umstellt...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 11:53
Man benutzt ja sowieso keine globalen Variablen, von daher ist das eigentlich egal
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 13:54
Danke schon einmal für die Beiträge.

Wie ist dann die richtige Vorgehensweise bei lokalen Variablen?

Wenn es heißt: "Laut Google sind in Delphi globale Variablen immer auf 0/nil initialisiert, lokale aber uninitialisiert, also undefined."

Beispiel:
Delphi-Quellcode:
procedure Foo;
var
  iLokaleVar: Integer;
begin
  //wenn volgende Zeile fehlt dann mekert der Compiler: "[dcc32 Warnung] Muster.pas(7): W1036 Variable 'iLokaleVar' ist möglicherweise nicht initialisiert worden"
  iLokaleVar:=0; //sicherheitshalber definieren.
  if Vorfall_1 then
  iLokaleVar := iLokaleVar + 1;
  if Vorfall_2 then
  iLokaleVar := iLokaleVar + 1;
  if Vorfall_3 then
  iLokaleVar := iLokaleVar + 1;

  if iLokaleVar>0 then
    showmessage('Achtung es gab ein Vorfall!');
end;
Oder wie macht ihr das mit lokalen Variablen?

Geändert von TBx (14. Aug 2017 um 07:21 Uhr) Grund: Delphi-Tags repariert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#10

AW: Delphi Variable Initialization

  Alt 11. Aug 2017, 14:05
Genau so.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:52 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