Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:07

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Particle System : Pointer exception
BeitragVerfasst: Mo Jul 04, 2005 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hallo @all,

frei nach dem Tutorial "Partikel Systeme I" habe ich versucht mir eine eigene Partikelengine zu schreiben. Ich stehe halt noch ganz am Anfang, weil ich ein Problem habe und nicht verstehe warum es auftritt.

Normalerweise, wenn man eine Exception hat und man auf "anhalten" drückt wird bei delphi die
Zeile markiert, in der die Exception aufgetreten ist, aber bei meiner Exception wird keine Zeile markiert, daher weiß ich auch net wo der Fehler liegt.


Folgende Exception kommt.
+===================================================================+
| Project start.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'.
| Process stopped. Use Step or Run to continue.
+===================================================================+

Wenn man die Anwendung abbricht (Escape-Taste) bevor der Counter (links oben im Fenstertitel)
die 100 erreicht kommt kein Fehler,
DOCH wenn der Counter um die 100 beträgt oder einmal drübergelaufen ist, und man die Anwendung
beendet kommt obiger Fehler!

Dabei habe ich doch gar keine Pointer benutzt, komisch :?:

Den Aufbau der Klassen habe ich ungefähr so wie im Tutorial beschrieben nachgebastelt.
Den Quellcode habe ich hochgeladen.
Bitte helft mir den Fehler zu finden!


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 13:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Code:
  1.   setlength(Particles, ArrayLength);
  2. und
  3.   For i:=0 to ArrayLength do

Das geht in die Hose. An der Stelle greifst du bereits auf ein Element zu welches nicht existiert. Du setzt als Länge 100. Somit hat das Array 100 Elemente. Dann greifst du aber auf die Elemente von 0 bis 100 zu. Das sind 101 Elemente. Ich habe mal setlength(Particles, ArrayLength + 1); gemacht. Aber das hatte auch nich nicht gewünschten Effekt. Also nächstes hatte ich mal setlength(Particles, ArrayLength + 100); dann ging es. Also ich kann dir nur empfehlen genau darauf zu achten wie viele Elemente du hast. Du kannst als Schleife auch For i:=0 to High(ArrayLength) do machen. Damit bist du immer auf der sicheren Seite.

Für den Späteren Zeitpunkt würde ich dir Empfehlen evtl. die Partikel als Objekte zu gestalten. Das macht den Aufwand im nachhinein kleiner. So musst du nicht ständig die Werte zuweisen sondern brauchst lediglich nur noch das Objekt in die Liste kopieren oder daraus löschen. Aber vorsicht! Du brauchst dann natürlich für jeden Partikel ein Objekt. Oder Pointer auf Records würden auch gehen. Aber wie gesagt. Für Später. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 14:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hey,
danke für deine schnelle Antwort!
dann kann ich endlich weiter machen mit meiner "Partikelengine". :P
Ich weiß, sieht halt momentan noch sehr sehr primitiv aus, ich wollte aber erst den algorithmus
testen, ob der funzt. (jetzt tut ers auch, nur noch ein paar änderungen (Performance-mäßig) sind nötig...).

Finde immer wieder toll, das man Antworten so schnell bekommt. :D

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Jul 04, 2005 14:13 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
pheasant hat geschrieben:
Dabei habe ich doch gar keine Pointer benutzt, komisch :?:

Den Aufbau der Klassen ...
8)

Klassenvariablen werden intern auch als Pointer verwendet. Die Aussage "Ich habe keine Pointer verwendet." kann man eigentlich nur noch bei Konsolenprogrammen treffen, die keine Klassen enthalten. Ansonsten hast du immer irgendwo Pointer im Einsatz... :wink:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 14:28 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
insbesondere werden dynamische arrays und Strings usw. auch über pointer abgehandelt, weshalb auch Konsolenanwendungen ohne Klassen nicht "pointerfrei" sind.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]