![]() |
Delphi-Version: XE5
Inline Variablen-Deklaration bei try..except
Als ich das erste mal Delphis eigenen
Delphi-Quellcode:
-Block für lokale Variablen sah musste ich sofort an die alten C-Compiler denken die erst säuberlich ihre Variablen deklariert und dann die Anweisungen haben wollten.
var
Mittlerweile kann ich sagen, dass das "Fehlen" von inline Deklarationen eins der Dinge ist, die ich in anderen Sprachen am meisten vermisse. :thumb: Darum soll es aber nicht gehen: Was hat es eigentlich mit
Delphi-Quellcode:
auf sich? Natürlich ist es jetzt schön handy, sich hier in einem Abwasch die Variable
var
// Nichts begin try // Zeug except on e: EFileNotFoundException do e.Zeugs(); else raise; end; end;
Delphi-Quellcode:
zu deklarieren und damit direkt weiterzuarbeiten. Im Gegensatz kann ich noch nicht einmal im
e
Delphi-Quellcode:
-Block meine Exception-Variable aufführen.
var
Syntaktisch gesehen eigentlich doch ein Sakrileg, oder? |
AW: Inline Variablen-Deklaration bei try..except
Ja, ein bissl komisch ist das schon, aber im Prinzip ist das hier nur ein "lokaler" gecasteter Alias für
![]() Stell es dir als eine Art Makro vor, welches intern die Variablen anlegt, vergleicht und castet.
Delphi-Quellcode:
begin
try // böses Zeug except on E: EFileNotFoundException do E.Kaputt; on E: EProgrammerNotFound do E.FaulerSack; else raise; end; end;
Delphi-Quellcode:
begin
try // böses Zeug except if ExceptObject is EFileNotFoundException then EFileNotFoundException(ExceptObject).Kaputt else if ExceptObject is EProgrammerNotFound then EProgrammerNotFound(ExceptObject).FaulerSack else raise; end; end;
Delphi-Quellcode:
Delphi legt ja auch so öfters mal "unsichtbare" lokale Variablen an,
var
E: EFileNotFoundException; E2: EProgrammerNotFound; begin try // böses Zeug except if ExceptObject is EFileNotFoundException then begin E := EFileNotFoundException(ExceptObject); E.Kaputt; end else if ExceptObject is EProgrammerNotFound then begin E2 := EProgrammerNotFound(ExceptObject); E2.FaulerSack; end else raise; end; end; sei es bei
Delphi-Quellcode:
, wo das Ergebnis von c*d ja quasi in einer Zwischenvariable landet,
a := b + c * d
oder der Enumerator einer For-In-Schleife und vorallem beim
Delphi-Quellcode:
. :stupid:
with
|
AW: Inline Variablen-Deklaration bei try..except
Die Exception-Variable hat außerhalb des spezifischen Catch/Except-Blocks keine Gültigkeit, d.h. der Zugriff bzw. der Inhalt ist undefiniert. Per Definitionem nicht. Man könnte sie auf Nil setzen, aber selbst dann ist nicht klar, was damit gemeint ist.
Zitat:
|
AW: Inline Variablen-Deklaration bei try..except
Zitat:
Ansonsten Zitat:
Z.B. Schleifenzähler sollen immer so verwendet werden:
Code:
So ist i tatsächlich nur innerhalb der Schleife bekannt.
for (int i = 1;...; i++)
|
AW: Inline Variablen-Deklaration bei try..except
Ist uach bei C, C++ und m.W. Java so.
|
AW: Inline Variablen-Deklaration bei try..except
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 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 by Thomas Breitkreuz