Toon posts:

[delphi] onbegrijpelijke error bij pointers

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg echt een hele vage error, en ik heb geen idee waar het vandaan komt.

Uitgaande van onderstaande classes:
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
27
28
29
30
31
32
type 
  PInteger = ^integer; //Pointer naar een integer

type
  TAbstractClass = class
    public
    procedure DoeIets(Value: PInteger); virtual; abstract;
end;

type
  TMyClassA = class(TAbstractClass)
    public
    procedure DoeIets(Value: PInteger); override;
end;

type
  TMyClassB = class(TAbstractClass)
    public
    procedure DoeIets(Value: PInteger); override;
end;

implementation

procedure TMyClassA.DoeIets(Value: PInteger);
begin
// ..
end;

procedure TMyClassB.DoeIets(Value: PInteger);
begin
// ..
end;

Tijdens het compilen van het proggie krijg ik bij de procedure van TMyClassA een foutmelding
[Error] prog.pas(34): Declaration of 'DoeIets' differs from previous declaration
Terwijl ik er 200% zeker van ben dat ik geen tikfouten heb gemaakt.

Sterker nog: Als ik overal de PInteger weg haal en vervang door een integer, dan gaat het compilen goed.

Ik heb echt al van alles geprobeerd, maar niets helpt. En die pointers heb ik echt nodig...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

en een var toevoegen? Helpt dat?

zo dus:
code:
1
procedure doeiets(var value: Pinteger)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Definieer je misschien PInteger op 2 verschillende plaatsen?

PInteger hoef je trouwens niet zelf te definieren omdat die ook in unit System wordt gedefinieerd.

Verwijderd

Topicstarter
en een var toevoegen? Helpt dat?
Maakt niets uit.

Nog iets vreemds. Als ik in MyClassA deze functie DoeIets weghaal, dan kan ik de source zonder fouten compilen. Bij ClassB gaat het dus wel goed. :?

Verwijderd

Topicstarter
PInteger hoef je trouwens niet zelf te definieren omdat die ook in unit System wordt gedefinieerd.
Heb je gelijk in. Maar dit is niet mijn source waar ik mee werk. Is slechts een voorbeeldje. In het echt is het een pointer naar een array van eigen records. Die moet ik wel zelf definieren en dat doe ik op slechts 1 plaats.

Verwijderd

Oke, maar als je op alle PInteger's [of jouw andere type :?] klikt met CTRL ingedrukt, kom je dan op dezelfde plek terecht.

Die foutmelding krijg je trouwens meestal als je een typfout hebt gemaakt :)

Verwijderd

Topicstarter
Op dinsdag 26 februari 2002 23:29 schreef DiFool het volgende:
Oke, maar als je op alle PInteger's [of jouw andere type :?] klikt met CTRL ingedrukt, kom je dan op dezelfde plek terecht.
Hier gaat het inderdaad fout. Mijn type blijkt te botsen met een type in SysUtils.
Die foutmelding krijg je trouwens meestal als je een typfout hebt gemaakt :)
Maar dat had ik wel eerst heel goed gecontroleerd... ;)


Problem Solved.
Pagina: 1