Avatar billede poull Nybegynder
04. januar 2003 - 20:03 Der er 10 kommentarer og
1 løsning

unsafe typecasting

Efter at have flyttet et program fra Delphi 6 til Delphi 7 får jeg en warning som jeg ikke lige kan slippe af med.

Jeg har en TList med en række objekter. Når jeg så skal typecaste objekterne for at kunne bruge deres properties, så kommer Delphi 7 og siger unsafe typecast. Jeg gør fx følgende for at få fat i en værdi:
TKlasse(Listen.Items[nr]).Noget

Jeg har prøvet at spørge således for at prøve at undgå den warning(giver dog error):
if Listen.Items[nr] is TKlasse then
  TKlasse(Listen.Items[nr]).Noget

Så hvordan undgår jeg den warning?
Avatar billede martinlind Nybegynder
05. januar 2003 - 12:37 #1
Safe typecast er med AS operatoren du kan prøve med den, TKlasse(Listen.Items[nr]).Noget vil ALTID være unsafe, men du kan sagten køre alligevel hvis du bare ved det er en ok typecast.

/Martin
Avatar billede poull Nybegynder
05. januar 2003 - 12:42 #2
Jeg ved netop at det er kun den klasse som listen indeholder. Kan du forklarer hvorfor Delphi mener at typecasting med AS er mere sikkert end med TKlasse() rundt om?
Avatar billede martinlind Nybegynder
05. januar 2003 - 12:44 #3
Det er fordi delphi har noget indbygget Class check hvis du bruger AS det er lidt langsommere end MyClass()

/Martin
Avatar billede martinlind Nybegynder
05. januar 2003 - 12:45 #4
den bruger RTTI ( RunTime Type Information )
Avatar billede speedy Nybegynder
05. januar 2003 - 12:49 #5
Jeg blander mig lige lidt da jeg har arbejdet sammen med poull i dette projekt :)

Vil det så sige at det smarteste er at bruge TKlasse(Listen.Items[nr]).Noget  når vi er 100% sikre på at det ikke kan være en anden klasse ?

Skal man så bare leve med de warnings ?

/SpEeDy
Avatar billede martinlind Nybegynder
05. januar 2003 - 12:59 #6
Ja, hvis du spøger mig det går lidt hurtigere
Avatar billede poull Nybegynder
05. januar 2003 - 14:46 #7
Kan man så kan give en eller ande parameter til compileren sådan at man ikke ser den warning da man ved at den ikke betyder noget. Men kna selvfølgelig slå den slags fejl fra, men vil helst det andet.
Avatar billede martinlind Nybegynder
05. januar 2003 - 14:50 #8
{$WARNINGS OFF}

....

{$WARNINGS ON}

Mener jeg det er ellers kig i hjælpen
Avatar billede poull Nybegynder
05. januar 2003 - 17:20 #9
Er det en løsning du ville vælge at slå warnings fra lige der hvor du ved at det er ok ? eller hvordan ser du på det?
Avatar billede martinlind Nybegynder
06. januar 2003 - 12:25 #10
Ja hvis du gerne vil slippe for dem, så brug den måde
Avatar billede poull Nybegynder
11. januar 2003 - 18:24 #11
Nå .. glemte lige at give credit for hjælpen =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester