Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Warum erscheint eine Fehlermeldung? (https://www.delphipraxis.net/179157-warum-erscheint-eine-fehlermeldung.html)

himitsu 18. Feb 2014 23:05

AW: Warum erscheint eine Fehlermeldung?
 
Der Debugger (oder ein Test ala
Delphi-Quellcode:
if Assigned(heute) then Beep;
oder
Delphi-Quellcode:
Assert(not Assigned(heute));
) meint aber dennoch, daß die Variable NIL ist, oder hat die doch irgendeinen Inhalt?


Beim ODER hängt es dann davon ab, ob und worauf "zufällig" der Wert zeigt,
also ob es überhaupt und wenn ja wann es knallt.

Helmi 19. Feb 2014 07:26

AW: Warum erscheint eine Fehlermeldung?
 
Bei
Delphi-Quellcode:
if Assigned(heute) then Beep;
pieps

und bei
Delphi-Quellcode:
Assert(not Assigned(heute));
) kommt folgende Fehlermeldung:

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EAssertionFailed aufgetreten. Meldung: 'Assertion fehlges (E:\Delphi 7\_TEST-PROJEKT_\Project2.dpr, Zeile 84)'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Stevie 19. Feb 2014 08:48

AW: Warum erscheint eine Fehlermeldung?
 
Autsch, dann wird bei D7 wohl die globale Variable nicht initialisiert, wie bei späteren Versionen.

DeddyH 19. Feb 2014 09:07

AW: Warum erscheint eine Fehlermeldung?
 
Sieht so aus. Nun weiß ich auch, wieso man sie früher ggf. direkt bei der Deklaration initialisiert hat.

Der schöne Günther 19. Feb 2014 10:13

AW: Warum erscheint eine Fehlermeldung?
 
Barry Kelly meint
Zitat:

You can depend on global variables being zero-initialized.
Dieser elende Schuft.

himitsu 19. Feb 2014 10:23

AW: Warum erscheint eine Fehlermeldung?
 
Tja, und ich dachte sei im Delphi schon immer so. :stupid:

Da kann der T.E. "froh sein, daß der Zeiger zufällig auf was zeigte.
Nur blöd, daß es was Wichtiges war, was da überschrieben wurde (fast wie ein BufferOverrun) und das dann am Ende kaputt war, als es freigegeben werden sollte.


Aber wer verwendet schon globale Variablen? Kein Wunder, wenn man das alte Verhalten nicht bemerkt. :roll:

Zitat:

Zitat von DeddyH (Beitrag 1248473)
Sieht so aus. Nun weiß ich auch, wieso man sie früher ggf. direkt bei der Deklaration initialisiert hat.

Stimmt ja, globale Variablen kann man ja, wie Konstanten, mit einem Initialwert vorbelegen. (hab ich mir für Lokale und Felder auch schonmal gewünscht :cry:)

Stevie 19. Feb 2014 15:49

AW: Warum erscheint eine Fehlermeldung?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1248484)
Barry Kelly meint
Zitat:

You can depend on global variables being zero-initialized.
Dieser elende Schuft.

Das hat er 2008 geschrieben, da war das vermutlich schon so. :)

Zitat:

Zitat von himitsu (Beitrag 1248490)
Tja, und ich dachte sei im Delphi schon immer so. :stupid:

Ich auch - und sollte auch so sein. Ich denke, das war ein Bug.
In "Delphi in a Nutshell" (von 2000 - also Delphi 5 Ära) heißt es auf Seite 395:
Zitat:

Without an initial value, a global variable is initialized to zero (empty string, nil pointer, etc.)
Witzigerweise gibt es trotzdem noch eine Warnung auf eine nicht initialisierte Variable, die ja eigentlich nicht kommen sollte, denn sie ist ja initialisiert :stupid:

p80286 20. Feb 2014 10:37

AW: Warum erscheint eine Fehlermeldung?
 
Zitat:

Zitat von DeddyH (Beitrag 1248473)
Sieht so aus. Nun weiß ich auch, wieso man sie früher ggf. direkt bei der Deklaration initialisiert hat.

Wenn man sich nicht darauf verlassen will, daß irgendjemand das erledigt, macht man es selbst!

Gruß
K-H

DeddyH 20. Feb 2014 10:40

AW: Warum erscheint eine Fehlermeldung?
 
Da ich schon länger keine globalen Variablen mehr verwende, ist mir das auch unter Delphi 7 nicht aufgefallen.

himitsu 20. Feb 2014 10:49

AW: Warum erscheint eine Fehlermeldung?
 
Zitat:

Zitat von DeddyH (Beitrag 1248729)
ist mir das auch unter Delphi 7 nicht aufgefallen.

Gäbe es TDE noch, wäre das Problem bestimmt schon weg. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Seite 2 von 3     12 3      

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