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

Aktuelle Zeit: Do Jul 10, 2025 22:35

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



Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:37 
Offline
DGL Member

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

ich habs versucht, aber die glaux.dll habe ich nicht auf meinem System. Auch im Internet war auf die schnelle nichts zu finden.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:39 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
also...
mit deinem Array stimmt immer noch was nicht...
du musst die Länge wie folgt bestimmen/festlegen...
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre> <span class='reserved'>for</span> k:=<span class='integer'>0</span> <span class='reserved'>to</span> (breite) <span class='reserved'>do</span>
<span class='reserved'>begin</span>
setlength(Feld[k],hoehe+<span class='integer'>1</span>);
<span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
dann ist dein array, so wie du es haben willst...
du musst dann den einzelnen array-Zellen einen Wert (MAuer...) geben und dann musst mal weiterschauen...

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Fiji-Fighter hat geschrieben:
also...
mit deinem Array stimmt immer noch was nicht...
du musst die Länge wie folgt bestimmen/festlegen...
Code:
  1.  &nbsp;for k:=0 to (breite) do
  2.  &nbsp;begin
  3.  &nbsp; &nbsp;setlength(Feld[k],hoehe+1);
  4.  &nbsp;end;

dann ist dein array, so wie du es haben willst...
du musst dann den einzelnen array-Zellen einen Wert (MAuer...) geben und dann musst mal weiterschauen...

Wenn du dir den Code angesehen hättest, den ich gepostet habe, dann hättest du gesehen, das ich genau das mache und es angeblich nicht funktioniert hab (obwohl ich das auch immer so mache).

Deshalb würd ich an Maris Stelle (ich sags heut schon zum zweiten Male) die Debugging-Fähigkeiten der Delphi-IDE nutzen, mit der sich solche Probleme im Handumdrehen lokalisieren und beheben lassen.Das Watchfenster und die anderen Debugwerkzeuge sollte man unbedingt nutzen, denn spätestens bei großen Projekten sind diese eine unersetzbare Hilfe!

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 20:47 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Ich habe jetzt wie von Son of Satan vorgeschlagen die Debug-Werkzeuge verwendet, ich weiß jetzt allerdings nicht viel mehr als vorher. Hier ist alles was ich weiß:
Die Speicherung der Werte in das Array klappt problemlos, die Exception tritt definitiv erst bei der Abfrage "if Feld[i,j] = Mauer then" (Zeile 254 falls ihr den Code habt) auf, da die Werte scheinbar nicht mehr ausgelesen werden können.
Hierbei spielt es jedoch keine Rolle, wie groß das Array ist und ob es Werte beinhaltet oder nicht.
Wenn ich das dynamische Array am Anfang z.B. mit 1000,1000 initialisiere tritt der Fehler auf, wenn ich aber ein statisches Array mit 1000,1000 verwende dann nicht.

P.S.: Durch die Aktivierung der Bereichs- und der Überlaufsprüfung ändert sich an der Meldung nichts.

@KidPaddle:
An der fehlenden Datei soll's nicht scheitern :) :
<a href='http://www.cfxweb.net/~delphigl/files/GLAux.zip' target='_blank'>http://www.cfxweb.net/~delphigl/files/GLAux.zip</a>
(Ich hoffe das ist die richtige)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 21:24 
Offline
DGL Member

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

aslo der Fehler liegt in der Funktion LoadGLTextures. Dort machst Du den Aufruf der Funktionen:

Code:
  1.  
  2. glGenTextures(1, texture[texnumber]);
  3. glBindTexture(GL_TEXTURE_2D, texture[texnumber]);
  4.  


Dies würde funktionieren, wenn die Arrays mit 0 starten. Da Du aber die Eigenart hast, deine Arrays mit 1 zu starten, müssen die Zeilen wie folgt lauten:

Code:
  1.  
  2. glGenTextures(1, texture[1 + texnumber]);
  3. glBindTexture(GL_TEXTURE_2D, texture[1+ texnumber]);
  4.  


Ich würde an deiner Stelle davon Abstand nehmen, da Du sonst noch häufiger in solche Probleme läuft.

Wie habe ich es raus gefunden? Ganz einfach, Watch-Fenster auf die Variable Feld gesetzt und 2 Breakpoints nach Ladekarte und am Anfang DrawScene gesetzt. Nach dem Aufruf von Ladekarte enthielt die Variable Feld gültige Werte, aber in DrawScene nicht mehr. Also passierte etwas dazwischen. Also die Methode FormCreate mit Einzelschritt durchlaufen bis die Variable Feld keine korrekte Werte mehr enthielt. Dies war nach dem Aufruf der Funktion LoadGLTextures. Nun nur noch reintrace und die genaue Zeile lokalisieren. Und das wars.

KidPaddle

PS.:
Warum nutzen hier soviele globale Variabeln? Da hat man eine OOP Sprache und alles steht, wie zu TP Zeiten, als globale Variable in den einzelnen Units.

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 01, 2003 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Sep 04, 2002 21:26
Beiträge: 63
Vielen Dank, jetzt funktioniert es.
Ich kapiere allerdings immer noch nicht warum.
Mein Array hat doch eigentlich absolut nichts mit dem Laden von Texturen zu tun, warum löscht die LoadGLTextures (Die ich übrigens nicht selber geschrieben habe, bisher aber immer so funktioniert hat) Werte aus dem Feld-Array???
Naja, ist ja auch egal, hauptsache es funktioniert jetzt


P.S.: Das Programm ist so natürlich noch nicht fertig, ich definiere einfach am Anfang (fast) alle Variablen global


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 01, 2003 19:39 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Das Poblem liegt darin, das der Wert texnumber beim Aufruf der Funktion LoadGLTextures den Wert 0 hat. Somit greifst Du auf dein Array mit texture[0] zu. Du hast aber dieses Array so definiert, das das erste Array - Element bei 1 ist, ein Element texture[0] gibt es nicht. Da normalerweise die Bereichsgrenzenprüfung aus Geschwindigkeistgründen abgeschaltet ist, erzeugt der Compiler auch keine Fehler.

Also übergibst Du der Funktion glGenTextures einen Pointer auf einen nicht definierten Speicherplatz und erzeugt so den Fehler.

Ich hoffe, ich konnte es Dir veranschaulichen.

Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 01:21 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
ich würde niemals nen array nehmen, das von 1 oder sogar von 2 oder so anfängt... immer von 0...

Code:
  1.  
  2. type
  3.   TFeldTyp = ftMauer, ftWasser, ftLava;
  4.  
  5.   TFeld = record
  6.     Typ : TFeldTyp;
  7.   end;
  8.  
  9. const
  10.   AnzahlFelder = 1000;
  11.  
  12. var
  13.   Felder : array of TFeld;
  14.   Felder2 : array of array of TFeld;
  15.  
  16.   I, J : Integer;
  17. begin
  18.  
  19.   SetLength(Felder, AnzahlFelder);
  20.   
  21.   for I := Low(Felder) to High(Felder) do
  22.   begin
  23.     ... sachen mit dem feldern machen :P
  24.   end;
  25.  
  26.   SetLength(Felder2, AnzahlFelder, AnzahlFelder);
  27.   
  28.   for J := 0 to AnzahlFelder-1 do
  29.   begin
  30.     for J := 0 to AnzahlFelder-1 do
  31.     begin
  32.       ... sachen mit dem feldern machen :P
  33.     end;
  34.   end;
  35.  
  36. end;
  37.  


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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