![]() |
pointer und proceduren
Moin Leute !
hab folgendes problem:
Delphi-Quellcode:
So , beim asführen gibt er mir aber eine Acces violation.Type tding = class private x,y : integer; public procedure move(xpos,ypos); end; Type PTding = ^Tding; var X : Tding; var PX : PTding; procedure tding.move(xpos,ypos); begin x := x + xpos; //hier kommt der Fehler y := y + ypos; end; procedure ... begin PX := @Tding; PX.move(2,2); end; Weiß jemand warum ? |
Du musst die Klasse erst einmal initialisieren. Aber wozu benötigst Du an der Stelle Pointer, das ist eher ungewöhnlich und, wie Du merkst, gefährlich.
...:cat:... |
Initialisert hab ichs, und leider brauch ich den pointer an dieser stelle
um praktischer an das objekt ranzukommen! |
Zitat:
Delphi-Quellcode:
var
Ding: TDing; // FALSCH!!! PX := @Tding; // BESSER Ding := Tding.Create; PX := @Ding; Zitat:
...:cat:... |
Moin braingrenade,
Zitat:
Mir fällt da nur eine Notwendigkeit ein einen solchen Umweg zu gehen. Der ist zum einen aber ein "schmutziger Trick" (;-)), zum anderen bei eigenen Objekten nicht notwendig. |
@sakura : das crewate hab ich an ner anderen stelle im code
@Christian : Wie geht der trick? |
Moin braingrenade,
wenn Du unter "schmutziger Trick" suchst, solltest Du es hier finden können. Wie gesagt, ist auch nicht schön, und diente nur als Beispiel dafür, dass eine ReadOnly Eigenschaft, zur Not auch verändert werden kann (produktiv würd' ich das allerdings nicht unbedingt riskieren) |
Moin !
Ich den trick gefunden , aber ich blick nicht ganz wie das in meinem fall anzuwenden ist ... |
Moin braingrenade,
das war nur ein Beispiel, wo man so einen "um die Ecke" Zugriff verwenden kann. Ob das bei Deinem Problem weiterhilft kann ich allein deshalb nicht beurteilen, da mir absolut nicht klar ist, was Du überhaupt vorhast. Dein Codebeispiel aus dem Eingangsposting macht für mich nämlich überhaupt keinen Sinn (oder vielleicht fehlt auch nur die Begründung) |
Aso !
dann post ich halt mal den ganzen code , aber das ist recht viel ! ICh will eine spriteengine programieren , das meiste hab ich schon , aber alle sprites die hinzugefügt werden werden unter einem großen array gespeichert in dem keine ordnugn herrscht , deshlab will ich mit pointern auf die einzelnen sprites zugreifen können und über diese auch proceduren ausführen können. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz