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

Aktuelle Zeit: So Jul 06, 2025 23:05

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: EListError
BeitragVerfasst: Sa Feb 01, 2003 22:39 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Hi,

beim Versuch eines meiner OpenGL-Proggies zu kompilieren, stoße ich, nachdem ich eine Textur hinzugefügt habe, auf einmal auf
Zitat:
Project tacho.exe raised exception class EListError with Message 'List index out of bounds (142882039)'. Process stopped. Use Step or Run to continue.

Die Fehlermeldung tritt bei
Code:
  1.  SwapBuffers(DrawHandle);
auf.
Ich verwende als DrawHandle
Code:
  1.  GetDC(Form1.Handle);

Ich hab keine Ahnung, woher die Fehlermeldung kommt und was sie mir eigentlich sagen will...
Zu sehen bekomme ich ein untexturiertes Quad und werde (dank SwapBuffers) dauernd mit der Meldung bombadiert.
Großen Dank im Vorraus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 01, 2003 22:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Eigentlich gehört dein Problem ja nicht ins OpenGL-Forum, denn es hat rein garnix mit OpenGL zu tun.

Ein EListError wird nur im Zusammenhang mit Listen wie z.B. TList oder TStrings aufgerufen, und tritt dann auf, wenn z.B. nicht mehr genug Speicher vorhanden ist um die Liste zu erweitern, oder weit häufiger dann, wenn man versucht auf ein nicht existentes Item dieser Liste zuzugreifen.

Dein Fehler liegt also definitiv an einer anderen Stelle deines Quellcodes.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 01, 2003 23:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
Ein EListError wird nur im Zusammenhang mit Listen wie z.B. TList oder TStrings aufgerufen, und tritt dann auf, wenn z.B. nicht mehr genug Speicher vorhanden ist um die Liste zu erweitern, oder weit häufiger dann, wenn man versucht auf ein nicht existentes Item dieser Liste zuzugreifen.

Das ist ja das Komische.... vielleicht bin ich ja auch nur übermüdet, aber ich entdecke nirgends eine Liste...
Falls sich jemand so nett ist:

<a href='http://encorex.no-ip.com/hosted_sites/bluetoby/ext/tacho.zip' target='_blank'>Hier </a>findet ihr das Projekt. (33,8 KB)

(Und falls es wirklich nicht hierhin gehört, verschieb es bitte)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 00:11 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Ich hab grad Windows frisch aufgezogen und noch kein Delphi installiert - wenn du win9x/me verwendest, kann es leicht passieren, dass dein Debugger wegen ein Paar dummen Bugs in diesem OS an der falschen stelle eine falsche Exception auslöst. Das wäre meine Direkte Vermutung, warum diese Exception an gerade dieser Stelle auftritt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 00:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Ich verwende Windows XP Home und auch nach einem Neustart kommt der Fehler :roll: ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 09:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 10:50
Beiträge: 42
Wohnort: [Auch diese Steine können Sie klauen...]
Hi Toby,

nimm den glBindTexture im ApplicationOnIdle raus, dann sollte es funktionieren.

Grundsätzlich weiß ich nicht, wo der Fehler liegt, denn normalerweise spricht eigentlich nichts dagegen, glBindTexture im Renderloop aufzurufen. Ich schätze deshalb mal, dass bei dir bei der Initialisierung bereits etwas schiefläuft.
Ich habe mir deine glInit mal etwas genauer angeschaut, und da ist mir aufgefallen, dass du einen Typ namens PForm deklarierst. Das ist aber nicht nötig, denn in Delphi sind sowieso alle Objekte Zeiger. D.h. du kannst auch Objekte als Parameter übergeben, ohne dass du sie ausdrücklich als Zeiger deklarierst. Alle Manipulationen geschehen jetzt am Objekt selbst (call-by-reference), nicht an einer Kopie(call-by-value). Mit PForm erreichst du lediglich, dass du einen Zeiger auf einen Zeiger hast... :wink:

Ich würde mir deshalb nochmal deine glInit genauer anschauen, möglicherweise "verzeigerst" du dich irgendwo.

Gruß

Übrigens: Bau in deinen Renderloop unbedingt noch eine Abfrage auf glGetError ein. Du wirst sehen, dass du, sobald du den glBindTexture im Loop hast, die Meldung "Invalid Enumerant" bekommst, was natürlich Schwachsinn ist, weil der Befehl an und für sich ja richtig ist. Also steckt der Fehler irgendwo anders, wie gesagt, ich tippe auf die Initialisierung...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 10:55 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Hi,

Du erstellt die Texture, bevor Du OpenGL initialisiert hast. Ist mir aufgefallen, weil deine Variable Back einen utopischen Wert hat und nicht, wie ich es gewohnt war, mit 1 startet.

Dein Problem ist die glBindTexture. Wie man im CPU - Fenster sehen kann, wird nach dem Aufruf dein Stack-Pointer nicht auf den Wert zurück gesetzt, wie vor dem Aufruf, so das die Rücksprungadresse aus der Methode falsch ist.

Gefunden!!!! Du hast deine glBindTexture falsch deklariert. Da fehlt ein stdcall; hinter deiner Funktionsdeklarations.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 11:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 10:50
Beiträge: 42
Wohnort: [Auch diese Steine können Sie klauen...]
Zitat:
Gefunden!!!! Du hast deine glBindTexture falsch deklariert. Da fehlt ein stdcall; hinter deiner Funktionsdeklarations.

KidPaddle


Stimmt, ist mir gar nicht aufgefallen...
Fragt sich nur, warum BlueToby die Proc neu deklariert hat. Schließlich ist glBindTexture bereits mit der Unit OpenGL mit eingebunden...

Gruß


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 12:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Hmm... hmm... hmm... bislang hat alles eigentlich immer richtig funktioniert... nur eben jetzt kam der Fehler... weil ich die OpenGL12 warscheinlich immer erst nach glInit eingebunden hab und die dann die
Falsche durch die Richtige ersetzt hat.
Aber jetzt gehts... Danke :wink:
Im Übrigen funktioniert das ohne PForm nicht, da bekomm ich 'ne AccessViolation.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 12:43 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Das geht schon, nur solltest Du dann beim Aufruf der Funktion das @-Zeichen wegnehmen.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 02, 2003 12:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Huuups... :roll: :oops:


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.017s | 17 Queries | GZIP : On ]