Ik ben met een programma bezig daarvoor heb ik een interface gedefinieerd:
Daarnaast heb ik een TSlide unit(class?) die deze interface implementeerd:
Nu heb ik gemerkt dat ik bij casten vage resultaten krijg. Bij de volgende codesnippet: (TSound implemeert ook de TTimelineObject interface)
Ik zet de id op 5.
Ik krijg de volgende waardes terug:
5, 4302728, 4302728, 5
Ik snap er geen bal van, wat mijn inziens zou hij bij de 2e dezelfde methode aan moeten roepen als bij de eerste. Maar op 1 op andere manier krijg ik een andere waarde terug..
Wat doe ik fout?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| unit uTTimelineObject;
interface
uses Classes, SysUtils;
type
TTimelineObject = interface
function play():Integer;
function getType() : Integer;
procedure setId(id : Integer);
function getId() : Integer;
end;
implementation
end. |
Daarnaast heb ik een TSlide unit(class?) die deze interface implementeerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| unit uTSlide;
interface
uses SysUtils, Classes, Controls, ExtCtrls, uTTransition, uTTimelineObject, Dialogs;
type
TSlide = class(TComponent, TTimelineObject)
private
FImage: TImage;
iImageId : Integer;
FTransition: TTransition;
FDuration: Integer;
procedure SetImage(AImage: TImage);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function Play() : Integer;
function getType(): Integer;
procedure setId(id : Integer);
function getId() : Integer;
published
property Image: TImage read FImage write SetImage;
property Transition: TTransition read FTransition write FTransition;
property Duration: Integer read FDuration write FDuration;
end; |
Nu heb ik gemerkt dat ik bij casten vage resultaten krijg. Bij de volgende codesnippet: (TSound implemeert ook de TTimelineObject interface)
code:
1
2
3
4
5
6
7
8
9
10
11
12
| slide.setId(5);
imageList.Add(image);
timeLineEvent := TTimelineEvent.Create(slide, 100 * i);
ShowMessage('in PLAYerMain: ' + intToStr(timeLineEvent.getTimelineObject.getId));
ShowMessage('in PLAYerMain: na cast ' + intToStr(TSlide(timeLineEvent.getTimelineObject).getId));
ShowMessage('in PLAYerMain: na cast ' + intToStr(TSound(timeLineEvent.getTimelineObject).getId));
ShowMessage('in PLAYerMain: after' + intToStr(timeLineEvent.getTimelineObject.getId));
timeLine.addTEvent(timeLineEvent); |
Ik zet de id op 5.
Ik krijg de volgende waardes terug:
5, 4302728, 4302728, 5
Ik snap er geen bal van, wat mijn inziens zou hij bij de 2e dezelfde methode aan moeten roepen als bij de eerste. Maar op 1 op andere manier krijg ik een andere waarde terug..
Wat doe ik fout?