Für mein derzeitiges project habe ich mich entschieden den Restless Importer zu Testen da er gegenüber dem TWF-Loader Animationen bietet was ich sehr nützlich und auch wichtig finde.
Ich habe also 1 object welches ich einlesen will die daten speichere ich in 4 array´s die sich in einem record befinden
Code:
TStartSzene = record
Objecte : array[0..10] of TRLSObject;
posX : array[0..10] of double;
posY : array[0..10] of double;
posZ : array[0..10] of double;
end;
ich seh gerade ich hab die rotation vergessen^^ aber das is ni so wichtig jetzt
der compiler findet keine fehler oder sonstiges aber direkt bei programmstart crasht die ganze sache mit der meldung
Zitat:
Rroject XXX.exe raised exception class EAccessViolation with message ' Access Violation at address 001D7608 in module "Restless.dll". Read of Address 0000001C'.
bis zum rendern komm ich gar nicht. eigentlich ist alles so wie in den samples aber irgendwie^^
wichtig ist vieleicht auch noch das dass nur passiert wenn die functin auf ein gültiges object zugreift wenn ich etwas ändere sodass sie nicht auf ein object zugreifen kann (weil da halt keines ist) dann geht alles
ich hoff ihr habt alles was wichtig ist und könnt mir helfen
also ich hab weitergearbeitet und bekomm die objecte jetz eingelesen
allerdings seh ich keine
ich bin dann drauf gekommen das ich die kamera ja auf null hab und die objecte einfach so gerendert habe also auch auf null was ja logischerweise nicht geht
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Okay... Obwohl ich Restless nur nebenbei unterstützt habe versuch ich mich mal.
Erstmal würd ich jetzt gerne deine Lademethoden sehen. Wie läuft dein Laden jetzt ab? Du scheinst ja etwas geändert zu haben, da es jetzt geht und vorher nicht.
Dropye hat geschrieben:
desweiteren ist mit aufgefallen das alle demos in SLD geschrieben sind is das zufall oder geht die sache sonst gar nicht?
Was genau meinst du mit SLD?
Dann frage ich mich noch, warum du den Umweg über die DLL gehst. Du könntest auch direkt Restless verwenden, ohne den Umweg über die DLL. Das sollte etwas stabiler sein (die DLL hat ein paar „Known Bugs“).
Dropye hat geschrieben:
wichtig ist vieleicht auch noch das dass nur passiert wenn die functin auf ein gültiges object zugreift wenn ich etwas ändere sodass sie nicht auf ein object zugreifen kann (weil da halt keines ist) dann geht alles
Den Satz habe ich auch nicht ganz verstanden, aber wir können das hintenanstellen, schließlich scheint das Laden jetzt zu funktionieren. Obwohl die Fehlermeldung beim Laden auf einen nil-Pointer hinweist.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
bis auf die letzte zeile die einer anderen procedure sagt das das laden nicht mehr ausgeführt werden muss ist alles so wie es war (obwohl das das ausschlaggebende sein könnte)
und dann noch zur dll wenn ich die weglassen kann na dann mach ich das aber es gibt ja auch keine richtige beschreibung in der readme steht einfach nur "gugg in die demo´s"
und dann noch mein etwas verkorckster satz^^ also
wenn restlessLoadFromFile(...) eine datei gefunden hat dann ging es nicht, hab ich aber im pfad was geändert sodass sie die datei nicht finden konnte ist sie surchgelaufen ohne error aber jetzt geht es, eingelesen werden 2 objecte ohne animation
edit: wenn ich restless.dll weglasse dann geht es gar nicht da mein programm diese erfordert und direkt beim start abbricht "...da restless.dll auf dem Computer nicht gefunden wurde..." edit2: ich habe jetzt festgestellt das die ganze sache irgendwie instabliel zu sein scheint, es funktioniert mit einer 50/50 chance anscheint so wie der rechner gerade lust hat
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich glaube (so ungern ich an sowas eigentlich mecker, aber das ist hier gerade extrem) ein großes Problem was wir hier haben ist deine ... freie Auslegung der Rechtschreibregeln. Ich bitte dich, deine Posts noch einmal durchzulesen, bevor du sie abschickst, und solche kleineren aber ausschlaggebenden Fehler wie SDL <-> SLD zu korrigieren. Das erleichtert das Lesen ungemein. Auch Groß-/Kleinschreibung hilft da .
Aber zurück zum eigentlichen Thema. Dass der Fehler nur manchmal auftritt, weist auf eine nicht initialisierte Variable oder einen ungültigen Speicherzugriff hin. Versuch mal, den Dateinamen des Modells, den du über GameFiles.MenueSzene.ReadString(...) ausliest, erst in eine Variable zwischenzuspeichern und dann diese Variable mit PChar() an restlessLoadFromFile zu übergeben. Wo wir gerade bei Strings sind, welche Delphi-Version benutzt du?
SDL ist auf jeden Fall nicht zwingend erforderlich. Natürlich brauchst du aber die restless.dll, solange du sie verwendest ... Dass es keine Beispiele für die direkte Verwendung gibt, ist wirklich bedauerlich. Da müsste sich vielleicht mal einer der Hauptentwickler ransetzen. Oder jemand, der Restless schon mehr benutzt hat als ich.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
ich habs noch nie mit lesen und schreiben gehabt und dabei lese ich es schon immer in der vorschau durch und korrigiere aber sowas überseh ich leider meistens
ich meld mich wenn ich es versucht habe.
edit: sry ganz vergessen^^ ich nutzte Delphi 7 second edition aber ist das wichtig? sollte ja eigentlich keine unterschiede in der sprache an sich geben
edit2: habs versucht mit dem selben ergebniss
ich hab mal testweise geprüft ob er die datei überhaupt richtig ausliest und genau den string ausgiebt der ausgegeben werden soll -> und ja das geht
ein direktes übergeben der strings funktioniert auch, dann gibts keinen error also wenn ich schreibe
aber bei vielen objecten wird das nicht mehr machbar sein (och man der andere loader war da schon einfacher^^ aber naja textsuite haben wa auch hinbekommen )
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Okay. Leider ist die Delphi-Version doch wichtig, da ab Delphi 2000-irgendwas die Strings keine Ansi- sondern WideStrings sind. Das führt gerne zu Problemen. Davon bist du aber augenscheinlich nicht betroffen, da du ja Delphi 7 benutzt.
Du hast ja selbst festgestellt, dass der Fehler eher unregelmäßig auftritt. Versuch also bitte noch ein paar weitere Male, mit der direkten Pfadangabe (PChar('...')) zu laden. Vielleicht ist der Fehler einfach nur nicht aufgetreten. Merkwürdig ist auf jeden Fall, dass es da anscheinend einen Unterschied zwischen dem Auslesen aus der Datei und dem direkten Angeben gibt.
Ich glaube allerdings auch, dass der Fehler nicht direkt an restless liegt sondern vielleicht irgendwo in deinem Code versteckt. Wenn der Fehler nochmal auftritt, könntest du dann noch mal die Fehlermeldung posten?
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
und dabei bin ich durch zufall auf diese Fehlermeldung gestoßen
Zitat:
Project XXX raised exception class EFOOpenError with Message ' Datei D:\[...]\DATA\SCHIFFE\LINER\Liner.rlsobj kann nicht geöffnet werden. Der prozess kann auf die Datei nicht zugreifen, da sie von einem anderen Prozess verwendet wird.'[...]
das hat mich auf folgende Idee gebracht
in meiner datei wird die reihenfolge wie die objecte eingelesen werden festgelegt
und siehe da es gibt die gleiche fehlermedung, was mich darauf schließen lässt das es da ein problem mit der datei gibt und weder mit dem loader noch mit meinem code
um das weiter zu testen habe ich Anzahl auf 1 gesetzt und die objecte ein paar mal hin und her vertauscht, es gibt nur dann probleme wenn ich "Liner.rlsobj" einlesen will
kann das was mit meinem schiff zu tun haben? ich poste mal ein screenshot
edit: leider funktioniert der IMG tag nicht deswegen nur ein link
könnte das modell einfach zu komplex sein? oder vieeleicht wegen der texturen? ich nutze .TGA zum texturieren hätte aber auch noch .dds dateien wenn das besser ist bzw kann so ziehmlich in jedes bekannte format exportieren
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Also die Fehlermeldung lässt auf etwas anderes schließen. Nämlich dass die Datei noch von einem anderen Programm verwendet wird. Allerdings hätte diese Fehlermeldung auch früher auftreten müssen, wenn das der eigentliche Grund wäre. Schließ mal alle anderen Programme außer Delphi und deines (und schau ggf. auch im Taskmanager nach, ob nicht irgendwo noch eine Prozessleiche von deinem Programm rumliegt) und versuch es dann nochmal.
greetings
ps.: Nettes Schiffchen. Selber modelliert?
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
ja natürlich, ich bin dadurch darauf gestoßen das ich vergessen habe mein programm zu reseten nachdem es abgeschmiert war und neustarten wollte, genau in diesem moment kommt die fehlermeldung das die Liner.rlsobj nicht geöffnet werden kann, tausche ich aber die objecte sodass erde.rlsobj zuerst eingelesen wird und löse den fehler wieder aus, dann ist er wieder bei Liner.rlsobj also hat er ja die erde.rlsobj schon eingelesen, ohne auf einen error zu stoßen, verstehste was ich mein?
und nein das hab ich nicht selber moddeliert ich hab nurnoch die bilder draufgeklebt und die ganze sache etwas abgeändert damit es von der größe passt und niemand sagen kann ich hätte es nur geklaut XD
Kurzes Offtopic: Verstricke dich nicht in Lizenz- und Urheberrechtsfragen. Das kann einem die Lust am Programmieren nehmen. >.<
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Testweise könntest du mal Liner.rlsobj umbenennen und eine Kopie von erde.rlsobj in Liner.rlsobj umbenennen und schauen, obs dann funktioniert. Dann hätten wir das Problem auf die Modelldatei eingegrenzt.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
funktioniert (bis auf das ich noch nix sehe^^) einwandfrei
also liegt das wirklich an meiner datei -.-
edit: habs ausprobiert einfache objecte mit wenig vertex punkten gehen alles was über 200kb geht gibt einen error, dann brauch ich wohl oder übel en anderen loader oder? ich mein lieber verzichte ich vorerst auf animationen als das meine objecte lieblos moddeliert wirken, oder ich bau nur die animierten teile eines objectes in diesem format und setz es an die stelle wo es gut aussieht, ach mir fällt schon was ein^^
oder habt jemand eine bessere idee zur hand?
edit2: oder ich seh gerade den 3ds loader hat schonmal jemand probiert?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Der 3ds Loader ist nicht das gelbe vom Ei. Beziehungsweise, der Loader schon, nur leider ist das Format hoffnungslos veraltet. Restless ist noch recht jung. Dass der Loader Probleme mit hochauflösenden Modellen hat, war mir bisher nicht bekannt ... Ich habe aber die Autoren schon informiert, dass hier ein Problem vorliegt. Mal sehen, wann eine Antwort kommt.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.