Jak získat ukazatel na instanci dynamického objektu v jeho metodě? – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak získat ukazatel na instanci dynamického objektu v jeho metodě? – Pascal – Fórum – Programujte.comJak získat ukazatel na instanci dynamického objektu v jeho metodě? – Pascal – Fórum – Programujte.com

 

Vlákno bylo úspěšně vloženo.
Pokud sám přijdeš na řešení, nezapomeň ho sem přidat!
JoDiK
~ Anonymní uživatel
987 příspěvků
10. 9. 2013   #1
-
0
-

Myslím, že tu pár skalních a zkušených pascalistů je - potřeboval bych poradit s problémem viz titulek.

Našel jsem jen implicitní parametr metody pod názvem self, to mi ale překladač odmítá vzít s chybou "Type mismatch". Nedaří se mi to ani přetypovat, tak jsem to zatím obešel tak, že jsem si po vytvoření objektu uložil jeho adresu jako jednu z vlastností. To je ale divný...

Viz očesaný kód k pochopení:

type
Puzel = ^Tuzel;
Tuzly = array[1..10] of Puzel;
Tuzel = object
              nazev : string;
              pocetnavuzlu : byte;
              navazuje : Tuzly;
              constructor init(inaz : string);
              procedure predej(pp:longint; var odkud:Puzel);

           end;


procedure Tuzel.predej(pp:longint; var odkud: Puzel);
var i : byte;
begin
  navazuje[1]^.Predej(pp-1, self);{ self = adresaInstanceObjektuVlastniciTutoMetodu ?}
end;

var
   u1,u2: Puzel;
begin
  u1:=new(Puzel,init('U1'));
  u2:=new(Puzel,init('U2'));

  u2^.predej(100,u1);
end.

Nahlásit jako SPAM
IP: 88.103.236.–
JoDiK
~ Anonymní uživatel
987 příspěvků
10. 9. 2013   #2
-
0
-

#1 JoDiK
Tak už jsem na to přišel, self není adresa té instance, ale přímo instance, takže stačilo zjistit její adresu addr(self) a změnit typ parametru...

navazuje[1]^.Predej(pp-1, addr(self));
Nahlásit jako SPAM
IP: 88.103.236.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý