Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ClassName ist falsch (https://www.delphipraxis.net/135521-classname-ist-falsch.html)

xZise 13. Jun 2009 11:10

Re: ClassName ist falsch
 
Moin Markus,

Du meinst diesen?
Zitat:

Zitat von xZise
[...]
Delphi-Quellcode:
var
  Zeile : TZeile;
begin
  Zeile := TBuchZeile.Create;
  Zeile.IstDummy := true;
  TExemplarZeile(Zeile).Buch := nil; // Hier würde der Fehler erzeugt
  ...
end;
[...]

Naja hier sind es drei Zeilen untereinander, aber was ist, wenn dieses Zeilen-Objekt über mehrere Units verstreut verwendet wird.

MfG
xZise

mkinzler 13. Jun 2009 11:16

Re: ClassName ist falsch
 
Ich meine die Tatsache, das eine Objekt als TBuchZeile erzeugt wird und dann als TExemplarZeile interpretiert wird.
Da diese Klasse in diesem Kontext aber nicht mehr identisch sind, macht der Code mit großer Wahrscheinlichkeit nicht das was du bezwecken willst. ( Wobei ich immer noch nicht genau weiss, was dass ist)

xZise 13. Jun 2009 11:28

Re: ClassName ist falsch
 
Hä?

Wer sagt denn, dass NIE (also wirklich nie nie nie nie nie nie) sowas vorkommt? Ich erstelle die Objekte in dieser Unit (UZeilen.pas) benutze sie aber mehreren anderen Units. Und wenn vielleicht ist irgendwo der Wurm drin und ich caste etwas falsch? Und genau kann könnte rein zufällig das passieren. Wobei dieser Fehler lässt sich mit einer Wahrscheinlichkeit von 100 % (15 "Tests") reproduzieren!

MfG
xZise

mkinzler 13. Jun 2009 11:33

Re: ClassName ist falsch
 
Dann überprüfe die Klasse bevor du sie castest oder mache wenigstens einen Softcast!

Delphi-Quellcode:
if Zeile is TExemplarzeile then TExemplarZeile(Zeile).Buch := nil;

xZise 13. Jun 2009 11:44

Re: ClassName ist falsch
 
Joar also ich habe den kompletten Code nach den cast zur TExemplarZeile durchsucht. Und naja an jeder Stelle, sollte eigentlich eine TExemplarZeile vorhanden sein. Nun habe ich an einer Stelle das zum Softcast geändert (warum da kA :P ). Und naja heute kam zumindest einmal der Bug das eine Konvertierung nicht möglich ist. Genau aus diesem Grund werde ich das mal bei allen casts machen. Dann werde ich Rasen mähen und dann sehe ich mal weiter :P

MfG
xZise

himitsu 13. Jun 2009 12:08

Re: ClassName ist falsch
 
tja, harte Casts sollte man halt wirklich nur machen, wenn man weiß, daß da wirklich nur dieser Typ vorkommen kann :)

ansonsten sollte IS und AS verwendet werden :angel:

xZise 13. Jun 2009 13:05

Re: ClassName ist falsch
 
Naja ich weiß ja dass es diese Zeile sein muss... Aber anscheinend ist da irgendwo der Wurm drin :)

MfG
xZise

xZise 16. Jun 2009 16:19

Re: ClassName ist falsch
 
Hallo an alle,

Okay ich habe den Fehler gefunden ;) Und zwar, lag es daran, dass ich auf inzwischen veraltete Objekte zurückgegriffen hatte.

MfG
xZise


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

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