AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

pointer und proceduren

Ein Thema von braingrenade · begonnen am 27. Jun 2003 · letzter Beitrag vom 29. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#1

pointer und proceduren

  Alt 27. Jun 2003, 15:02
Moin Leute !

hab folgendes problem:

Delphi-Quellcode:

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;
So , beim asführen gibt er mir aber eine Acces violation.

Weiß jemand warum ?
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 27. Jun 2003, 15:23
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.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 27. Jun 2003, 15:55
Initialisert hab ichs, und leider brauch ich den pointer an dieser stelle
um praktischer an das objekt ranzukommen!
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 27. Jun 2003, 15:58
Zitat von braingrenade:
Initialisert hab ichs
Delphi-Quellcode:
var
  Ding: TDing;
// FALSCH!!!
PX := @Tding;
// BESSER
Ding := Tding.Create;
PX := @Ding;
Zitat von braingrenade:
um praktischer an das objekt ranzukommen!
Erklär mal, warum eine normale Klassenvariable es nicht tut. Bedenke, es kommt die Zeit, da werden Pointer verboten sein

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 27. Jun 2003, 16:22
Moin braingrenade,

Zitat von braingrenade:
leider brauch ich den pointer an dieser stelle
um praktischer an das objekt ranzukommen!
das eine Klassenvariable einen Pointer auf das Objekt enthält ist Dir aber schon klar?

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#6
  Alt 27. Jun 2003, 17:38
@sakura : das crewate hab ich an ner anderen stelle im code

@Christian : Wie geht der trick?
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 27. Jun 2003, 18:12
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)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#8
  Alt 27. Jun 2003, 18:35
Moin !


Ich den trick gefunden , aber ich blick nicht ganz wie das in meinem fall anzuwenden ist ...
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 27. Jun 2003, 18:40
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)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von braingrenade
braingrenade

Registriert seit: 30. Okt 2002
Ort: Neufra
274 Beiträge
 
Delphi 6 Personal
 
#10
  Alt 27. Jun 2003, 18:48
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.
Let the sun beat down upon my face
Stars fill my dream
I am a traveller of both time and space
To be where I have been ________________ Such A Surge
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz