Discussion:
Delphi bringt keine Warnung bei nicht initialisierter Variable
(zu alt für eine Antwort)
Matthias Frey
2015-01-19 11:56:37 UTC
Permalink
Hallo zusammen,

Delphi XE-7 bringt keine Warnung bei folgendem Code:

type
TDreierSet = set of (eins, zwei, drei);

function Empty2(): TDreierSet;
begin
end;

Nach meinen Untersuchungen:
- betrifft das Problem nur sets
- betrifft es Result und auch lokaler Variable
- bei größerem code ist Result auch tatsächlich falsch
z.B. [zwei,(out of bound) 6]

Ist das ein Delphi-Bug. Geht das bei älteren Versionen?

Matthias
Achim Kalwa
2015-01-19 12:41:10 UTC
Permalink
Hallo,
Post by Matthias Frey
type
TDreierSet = set of (eins, zwei, drei);
function Empty2(): TDreierSet;
begin
end;
Ist das ein Delphi-Bug. Geht das bei älteren Versionen?
Gerade mit XE3 getestet: Keine Warnung.

Achim
Carsten Thumulla
2015-01-19 14:17:56 UTC
Permalink
Post by Achim Kalwa
Post by Matthias Frey
type
TDreierSet = set of (eins, zwei, drei);
function Empty2(): TDreierSet;
begin
end;
Ist das ein Delphi-Bug. Geht das bei älteren Versionen?
Gerade mit XE3 getestet: Keine Warnung.
lokal, global / ist ein Set nicht vorbelegt? Was kommt denn raus? Null?
also eins!


ct
Matthias Frey
2015-01-19 15:06:44 UTC
Permalink
Post by Carsten Thumulla
Post by Achim Kalwa
Post by Matthias Frey
type
TDreierSet = set of (eins, zwei, drei);
function Empty2(): TDreierSet;
begin
end;
Ist das ein Delphi-Bug. Geht das bei älteren Versionen?
Gerade mit XE3 getestet: Keine Warnung.
lokal, global / ist ein Set nicht vorbelegt? Was kommt denn raus? Null?
also eins!
Bei global weiß ich es nicht, sonst: Nein, es ist undefiniert.
Ich bekam auch schon mal ein [zwei,(out of bound) 6]
Das hängt davon ab was vorher auf dem Stack oder im EAX-Register ist.
Post by Carsten Thumulla
ct
Matthias
Carsten Thumulla
2015-01-19 15:43:08 UTC
Permalink
Post by Matthias Frey
Nein, es ist undefiniert.
Dann fehlt 'ne Meldung

Loading...