🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5153

Re: een algoritme...

#5153
From: TRAX
Date: Wed, 14 May 2003 12:30
50 lines
3678 bytes

Roel Schroeven wrote:
> TRAX wrote:
>
>>> Veiliger:
>>>
>>> void __fastcall TFrmhoofd::imgklik(TObject *Sender)
>>> {
>>>     TImage *Image = dynamic_cast<TImage*>(Sender);
>>>     if (Image) {
>>>         int rij = (Image->Tag >> 16) & 0xff;
>>>         int kolom = Image->Tag & 0xff;
>>>         // ...
>>>     }
>>> }
>>
>>
>> t'is om van te bleiten :(
>> ik doe hte op de veilige manier en dan krijg ik de volgende fout:
>> Cannot cast from 'TObject *' to 'TImage'
>> aangezien ik geen snars van dat stukje code snap, weet ik niet hoe
>> de fout weg te krijgen :(
>
> Korte uitleg: ben je het sterretje niet vergeten?
>
> Lange uitleg:
> De pointer die de functie binnenkrijgt is van het type TObject, maar
> kan wijzen naar objecten van alle klassen die rechstreeks of
> onrechtstreeks afleiden van TObject. Zowat alle VCL-klassen dus,
> onder andere TImage.
>
> Tag is een property die niet bestaat voor TObject, wel voor TImage
> (eigenlijk voor TControl en alles wat daarvan afleidt). Wat de
> compiler niet weet maar jij en ik wel is dat de pointer in deze
> functie altijd
> naar een TImage wijst, omdat ze enkel gebruikt wordt als event handler
> voor TImage-objecten. Dus moeten we de compiler wijsmaken dat we te
> doen hebben met een TImage: een cast dus. Een dynamic cast in dit
> geval. De veilige vorm gaat checken of TImage wel degelijk afleidt
> van TObject, en geeft een null-pointer als dat niet zo blijkt te
> zijn. In het andere
> geval geeft dynamic_cast de pointer terug, maar dan met het gewenste
> type. Het type dat we opgeven is het type van de pointer, dus er moet
> een sterretje bij staan.
>
> De quick and dirty methode, erfenis uit C, geeft altijd de pointer
> terug zonder enige vorm van controle.

nope, ik heb copy-paste toegepast :(
Technical Details
Message-ID: <XFqwa.1661$1u5.25@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!newsfeed.cwix.com!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <T%awa.698$1u5.156@afrodite.telenet-ops.be> <fXdwa.1083$1u5.154@afrodite.telenet-ops.be> <y%kwa.1270$1u5.216@afrodite.telenet-ops.be> <8nmwa.1335$1u5.157@afrodite.telenet-ops.be> <Iumwa.1342$1u5.172@afrodite.telenet-ops.be> <1rnwa.1395$1u5.221@afrodite.telenet-ops.be> <FNnwa.1422$1u5.241@afrodite.telenet-ops.be> <n_nwa.1437$1u5.182@afrodite.telenet-ops.be> <37owa.1443$1u5.153@afrodite.telenet-ops.be> <%iowa.1456$1u5.237@afrodite.telenet-ops.be> <2Yowa.1503$1u5.257@afrodite.telenet-ops.be> <9zpwa.1546$1u5.247@afrodite.telenet-ops.be> <gPpwa.1558$1u5.25@afrodite.telenet-ops.be> <vVpwa.1571$1u5.234@afrodite.telenet-ops.be> <v3qwa.1580$1u5.263@afrodite.telenet-ops.be> <rbqwa.1590$1u5.60@afrodite.telenet-ops.be> <Ipqwa.1627$1u5.254@afrodite.telenet-ops.be> <Qsqwa.1632$1u5.172@afrodite.telenet-ops.be> <_Bqwa.1654$1u5.196@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,dcf5f7295edf5117
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-05-14 05:32:19 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!sn-xit-01!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!newsfeed.cwix.com!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: "TRAX" <Stijn.Verspeet@pandora[delete.this].be>
Newsgroups: be.comp.programming
References: <T%awa.698$1u5.156@afrodite.telenet-ops.be> <fXdwa.1083$1u5.154@afrodite.telenet-ops.be> <y%kwa.1270$1u5.216@afrodite.telenet-ops.be> <8nmwa.1335$1u5.157@afrodite.telenet-ops.be> <Iumwa.1342$1u5.172@afrodite.telenet-ops.be> <1rnwa.1395$1u5.221@afrodite.telenet-ops.be> <FNnwa.1422$1u5.241@afrodite.telenet-ops.be> <n_nwa.1437$1u5.182@afrodite.telenet-ops.be> <37owa.1443$1u5.153@afrodite.telenet-ops.be> <%iowa.1456$1u5.237@afrodite.telenet-ops.be> <2Yowa.1503$1u5.257@afrodite.telenet-ops.be> <9zpwa.1546$1u5.247@afrodite.telenet-ops.be> <gPpwa.1558$1u5.25@afrodite.telenet-ops.be> <vVpwa.1571$1u5.234@afrodite.telenet-ops.be> <v3qwa.1580$1u5.263@afrodite.telenet-ops.be> <rbqwa.1590$1u5.60@afrodite.telenet-ops.be> <Ipqwa.1627$1u5.254@afrodite.telenet-ops.be> <Qsqwa.1632$1u5.172@afrodite.telenet-ops.be> <_Bqwa.1654$1u5.196@afrodite.telenet-ops.be>
Subject: Re: een algoritme...
Lines: 52
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID: <XFqwa.1661$1u5.25@afrodite.telenet-ops.be>
Date: Wed, 14 May 2003 12:30:47 GMT
NNTP-Posting-Host: 213.118.62.19
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1052915447 213.118.62.19 (Wed, 14 May 2003 14:30:47 MET DST)
NNTP-Posting-Date: Wed, 14 May 2003 14:30:47 MET DST
Organization: Telenet Internet