[delphi] Adres van het object waar je in zit

Pagina: 1
Acties:

  • MicroWhale
  • Registratie: Februari 2000
  • Laatst online: 18-06 12:42

MicroWhale

The problem is choice

Topicstarter
Ik zie het niet... het zal wel verbazingwekkend simpel zijn.... maar toch

Stel ik doe:
code:
1
2
3
4
5
6
7
8
9
10
11
var Concepts : TConceptList;

procedure TConceptList.AddConcept(aName: String);
var aLinkList : TLinkList;
begin
  if (aName<>'') and (IndexOf(aName)=-1) then
  begin
    aLinkList:=TLinkList.Create;
    aLinkList.Parent:=@Concepts
  end
end;


Dit is natuurlijk niet netjes omdat de "Concepts"-variabele er keihard instaat.. hoe los ik dit goed op? dus bij de @ een normale verwijzing, zodat het goed naar het object verwezen wordt....

Het enige belangrijke is dat je vandaag altijd rijker bent dan gisteren. Als dat niet in centen is, dan wel in ervaring.


  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

"self" ipv "Concepts" :?

Forget your fears...
...and want to know more...


  • MicroWhale
  • Registratie: Februari 2000
  • Laatst online: 18-06 12:42

MicroWhale

The problem is choice

Topicstarter
Dat dacht ik ook, maar dat geeft dus een andere pointer terug dan @Concepts, ook Self en @Self komen niet overeen.

Het enige belangrijke is dat je vandaag altijd rijker bent dan gisteren. Als dat niet in centen is, dan wel in ervaring.


  • MicroWhale
  • Registratie: Februari 2000
  • Laatst online: 18-06 12:42

MicroWhale

The problem is choice

Topicstarter
ah, 't is al opgelost...

TConceptList zat in TLinkList en vice versa... nu eerst:

code:
1
2
3
4
5
6
7
8
9
  TConceptList = class;
  TLinkList = class(TStringList)
  public
    Parent : TConceptList;
    ....
  end;
  TConceptList = class (TstringList)
    ....
  end;


en dan:

code:
1
  aLinkList.Parent:=(Self as TConceptList);


werkt wel :)

Het enige belangrijke is dat je vandaag altijd rijker bent dan gisteren. Als dat niet in centen is, dan wel in ervaring.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Logos schreef op 02 February 2003 @ 17:03:
Dat dacht ik ook, maar dat geeft dus een andere pointer terug dan @Concepts, ook Self en @Self komen niet overeen.
Objecten zoals Self en Concepts zijn al pointers. @ van een object doen geeft het adres van de pointer zelf, niet waar het heenwijst (het object).

Delphi:
1
2
3
4
5
Self = Concepts;  // Waar
@Self = @Concepts;  // Onwaar

aLinkList.Parent := Self;  // Goed
aLinkList.Parent := @Self;  // Fout

[ Voor 9% gewijzigd door LordLarry op 02-02-2003 21:30 ]

We adore chaos because we like to restore order - M.C. Escher