Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem bei SetLength() (https://www.delphipraxis.net/186275-problem-bei-setlength.html)

EWeiss 19. Aug 2015 19:42

AW: Problem bei SetLength()
 
Prüfe doch mal beim 2ten laden welchen wert TRXHead.Materials denn nun wirklich hat.
Beim laden kann ich nirgends erkennen wo Materials ein neuer wert zugewiesen wird.

Eventuell..
SetLength(MTL, TRXHead.Materials);
nach dem öffen der Textdatei einfügen nicht vorher wenn Materials den neuen wert aus der Text Datei bekommt.

gruss

the3dcloser 19. Aug 2015 19:50

AW: Problem bei SetLength()
 
BUG hatte die Lösung. Lade ich beide Dateien direkt hintereinander, geht es ohne Probleme.
Es muss tatsächlich an irgendeinem Code dazwischen liegen.
Dummerweise mache ich zwischen den eigentlichen beiden Aufrufen der LoadMTL Prozedur nichts anderes, als die geladenen Daten mittels OpenGL zu rendern. Aber dabei wird ja eigentlich nichts an dem Record bzw an dem array geändert, denn das Rendern ist ja ein reiner Lesevorgang.

Übersehe ich dabei etwas?


TRXHead.Materials wird in einer anderen Lade-Prozedur zugewiesen(da sich der Wert in einer anderen Datei befindet), welche vor der LoadMTL() prozedure aufgerufen wird.



Ich könnte auch anbieten, dass ich Interessierten den Code per Email zukommen lasse, damit dort ein Blick hineingeworfen werden kann. Ich möchte den Code allerdings leider nicht öffentlich teilen.

EWeiss 19. Aug 2015 19:56

AW: Problem bei SetLength()
 
Zitat:

TRXHead.Materials wird in einer anderen Lade-Prozedur zugewiesen(da sich der Wert in einer anderen Datei befindet), welche vor der LoadMTL() prozedure aufgerufen wird.
Sorry und du bist dir sicher das du das auch wirklich tust.? vor dem zweiten laden?
Wenn ja hilft dir nur debuggen.

gruss

Mavarik 19. Aug 2015 20:04

AW: Problem bei SetLength()
 
Zitat:

Zitat von the3dcloser (Beitrag 1312763)
Luckie, was verstehst du unter "Probleme bereiten"? Kannst du dabei etwas genauer werden?

Daher auch meine Frage... Longstring ist eine Refrenz... "nur ein Pointer" mit Refcount usw...

the3dcloser 20. Aug 2015 12:01

AW: Problem bei SetLength()
 
Zitat:

Zitat von EWeiss (Beitrag 1312783)
Sorry und du bist dir sicher das du das auch wirklich tust.? vor dem zweiten laden?
Wenn ja hilft dir nur debuggen.


Der Wert ist vor dem aufrufen zugewiesen, er ist bei der größeren Datei bei 2, bei der zweiten Datei bei 1. Beides sind meines Wissens nach eine gültige Zahl für SetLength()

Ich bin nur ein Hobby-Programmmierer, ohne jegliches Informatikvorwissen. Inwiefern soll mit denn dann "nur debuggen" ausführen?

Vielleicht ist es noch hilfreich, wenn ich die Assemblernachricht angebe:
Zitat:

Zitat von Assembler
00403514 0f1004c6 movups (%esi,%eax,8),%xmm0

Ich persönlich kann damit nichts anfangen :/

frankyboy1974 20. Aug 2015 12:24

AW: Problem bei SetLength()
 
Hallo,

also zwischen den beiden Aufrufen renderns du nur, nehmen wir an, du rufts da eine Funktion falsch auf, und dieses FALSCH aufrufen, führt dann am Ende zu dem von dir beschriebenen Problem. Du möchtest hier nicht deinen ganzen Quellcode posten, das ist soweit ok. Aber dann müsstest du auch das Problem grundsätzlich alleine lösen. Es macht wenig Sinn, ein Problem nur halb zu posten, und dann zu erwarten, dass die anderen sich die andere Hälfte dann selber holen

mfg

frank

BadenPower 20. Aug 2015 12:54

AW: Problem bei SetLength()
 
Zitat:

Zitat von the3dcloser (Beitrag 1312855)
Der Wert ist vor dem aufrufen zugewiesen, er ist bei der größeren Datei bei 2, bei der zweiten Datei bei 1. Beides sind meines Wissens nach eine gültige Zahl für SetLength()

Nochmals zum mitschreiben:

Die Fehlermeldung, welche uns der TE gepostet hat, wird NICHT durch die Funktion SetLength() erzeugt.

Egal was in "TRXHead.Materials" steht, wirft SetLength() niemals diesen Exceptiontyp.

the3dcloser 20. Aug 2015 13:17

AW: Problem bei SetLength()
 
Ich habe es durchaus aufgenommen, dass der Fehler nicht von SetLength erzeugt wird, jedoch kommt die Fehlermeldung exakt bei dieser Zeile im Code.

Sonderlich glücklich bin ich bei der folgeden Handlung nicht, aber da das Projekt ja noch nicht ganz fertig ist, kann man ja ein Auge zudrücken.

Anbei sämtliche Projektdateien, sowie die beiden Beispieldateien. Auf Wunsch kann ich mehr Beispieldateien verfügbar machen.
Die zu ladendenden Dateien sind die *.trx Dateien, neben dieser Datei werden auch weitere Dateien, welche zum darstellen (via OpenGL) benötigt werden, geladen.


Download: http://www.file-upload.net/download-...4/Tool.7z.html

BadenPower 20. Aug 2015 14:06

AW: Problem bei SetLength()
 
Bei mir ist das Programm überhaupt nicht lauffähig.

1. Fehler in Zeile 257 der Mainunit.pas in TForm1.LoadShader.
Delphi-Quellcode:
ProgramO:=glCreateProgram;

BUG 20. Aug 2015 14:57

AW: Problem bei SetLength()
 
Zitat:

Zitat von BadenPower (Beitrag 1312868)
Egal was in "TRXHead.Materials" steht, wirft SetLength() niemals diesen Exceptiontyp.

Man kriegt das vermutlich hin, wenn man die Strings, das Array oder allgemein die Speicherverwaltung kaputt macht :wink:

Wenn man keine besseren Analysewerkzeuge hat, könnte man zum Beispiel versuchen, systematisch Programmbestandteile zwischen den Aufrufen auszukommentieren bis es wieder funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Seite 2 von 3     12 3      

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