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

Aktuelle Zeit: Di Jul 08, 2025 16:43

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Feb 23, 2008 13:36 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
ich poste mein problem mal hier, weil es sich nicht direkt auf opengl bezieht.

also, ich habe mir einen kleinen model-loader für 3ds gecoded. der funktionierte bisher immer wunderbar. ein manager lädt alle 3ds-files aus einem ordner. weiterhin gibt es einen datentyp für das model selbst (t3dmodel) und einen für eine art "zeigertyp" (tmodel) , welcher position usw. enthält und dann das model (t3dmodel) nur mir entsprechenden rotate usw. aufruft.

und jetzt kommt das problem:

ich habe in meinem projekt etwa 5 3ds in einem ordner. der manager lädt die auch brav. wenn ich jetzt ein weiteres 3ds hinzufüge, kann es unter umständen dazu kommen (vor allem, bei recht großen models), dass das programm mit einer zugriffsverletzung abbricht. allerdings, wenn ich für das neue model ein anderes rausnehme, geht es. es liegt also nicht an den models selber, weil die korrekt geladen werden können (wenn es keine zugriffsverletzung gibt). es liegt auch nicht an der anzahl, denn bestimmte models (also zusätzlich zu den 5) lädt er ohne murren (auch manchmal bis zu 10 weitere). wie gesagt, besonders wahrscheinlich ist es bei models mit extrem vielen flächen.

da ich absolut keine ahnung habe, wie dies zu stande kommt, poste ich mal hier meinen code. (ich hoffe es sind genug kommentare.)

der sollte sich auch leicht in bestehende projekte integrieren lassen, da er aus anderen units nur ein paar typen und konstanten nutzt. (die frustum-unit entspricht der von sascha willems aus'm tutorial).

so, lange rede ohne sinn, hier mein code:

Edit : Codeblöcke entfernt. Bitte keine solchen riesigen Codeblöcke posten, dass ist nicht nur unübersichtlich, sondern auch ne Menge Arbeit für den Codeparser der Forensoftware. Beim nächsten Mal einfach betroffenen Quellcode als Attachment anhängen - Sascha Willems

Edit: ok, ich hab mal den source als anhang gepostet.

ich hoffe einfach mal, dass von euch einer rausfindet, wo diese zugriffsverletzung herkommt.

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Zuletzt geändert von McWurscht am Sa Feb 23, 2008 18:03, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 15:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Was mir gerade auffällt: Warum nennst du deine Destruktoren Kill? Das ist natürlich vollkommen legitim aber NUR, wenn du gleichzeitig einen zweiten vollwertigen Destruktor hast, der Destroy heißt und den aus TObject mit override; überschreibt. Sonst führt der Aufruf von Free zu Speicherlecks.

//Edit: Was mir weiterhin auffällt: Dynamische Arrays brauchst du nicht auf Nil zu setzen und erst recht nicht auf Nil zu prüfen. For-Schleifen mit Dynamischen Arrays solltest du in der art
Code:
  1. for I := Low(Array) to High(Array) do
ODER
Code:
  1. for I := 0 to Length(Array)-1 do
aufbauen. Beide funktionieren wunderbar, das letzte allerdings nicht, wenn du das für ein Array verwendest, das eine Methode als Parameter bekommen hat und das eventuell nicht bei 0 anfängt.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 15:32 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
so, jetzt haben wir ein neues symptom: wenn ich bei mir im compiler bereichsprüfung anschalte, spuckt er mir beim starten ne erange exception aus. diese wiederum während die models geladen werden. allerdings auch, wenn ich nur die 3ds drinhab, die er sonst ohne murren lädt. vielleicht hilft das ja bei der fehlersuche...

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Kannst du das vielleicht genauer Einschränken? Ich verwende für soetwas immer, zumindest wenn der Debugger keine genauen Zeilenangaben rauswirft, WriteLn oder ShowMessage um anzugeben, welcher Befehl gerade ausgeführt wurde. Das Hilft manchmal ungemein.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 23, 2008 16:39 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
jetzt hab ich das problem gelöst. nachdem ich mir bei wikipedia nochma quicksort genau angeguckt hab, hab ich da nen fehler gefunden in der partition. eigentlich war die ganz falsch. das kommt davon, wenn man vom inet abschreibt....

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 24, 2008 11:34 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Lord Horazont hat geschrieben:
//Edit: Was mir weiterhin auffällt: Dynamische Arrays brauchst du nicht auf Nil zu setzen und erst recht nicht auf Nil zu prüfen. For-Schleifen mit Dynamischen Arrays solltest du in der art
Code:
  1. for I := Low(Array) to High(Array) do
ODER
Code:
  1. for I := 0 to Length(Array)-1 do
aufbauen. Beide funktionieren wunderbar, das letzte allerdings nicht, wenn du das für ein Array verwendest, das eine Methode als Parameter bekommen hat und das eventuell nicht bei 0 anfängt.

Afaik fangen die inzizes von arrays unbekannter Größe die du in einer funktion übergeben bekommst mit 0 an.
also
Code:
  1. type TMyArray=array[1..10]of integer;
  2. procedure Proc1(Data:TMyArray);<- Fängt mit 1 an
  3. procedure Proc2(Data:array of integer);<- Fängt mit 0 an, auch wenn du ein TMyArray übergibst

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 24, 2008 12:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
@The-Winner:
Naja, ist auch egal, mit der ersten Methode ist man auf jeden Fall auf der sicheren Seite.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 24, 2008 23:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
why write another .3ds loader?

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 25, 2008 13:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
He wanted to do it himself because he wanted to learn such things. It wasn't against yours.

greetings Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 25, 2008 14:11 
Offline
DGL Member

Registriert: Do Feb 21, 2008 10:49
Beiträge: 55
Wohnort: Dresden
Programmiersprache: FPC/Linux
if i one day code a real project, i will use a better loader (if i'm still to stupid to load those animation data) like your one of course. but for now i'm just coding this simple loader for my personal pleasure. :D as lord said, i'm not intending to rival with your loader.

_________________
Gruß McWurscht - sorry für's Posting.

Wer mal meinen bisher erfolgreichsten Erguss in Sachen Web-Programmierung sehen will: RCV


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


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 22 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 | 15 Queries | GZIP : On ]