Zu meinem Problem habe ich leider bis jetzt noch nichts hilfreiches gefunden: Ich benutze das CodeGear RAD Studio 2009, Windows 7 und die Textures.pas von Jan Horn. Mir ist auch gerade aufgefallen, dass diese ziemlich alt ist (2001), aber das Laden aus normalen BMP-, JPG- und TGA-Dateien funktioniert perfekt. Im header der Textures.pas steht das hier:
Code:
// Usage : LoadTexture(Filename, TextureName, LoadFromResource); // // eg : LoadTexture('logo.jpg', LogoTex, TRUE); // will load a JPG texture from the resource included // with the EXE. File has to be loaded into the Resource // using this format "logo JPEG logo.jpg"
Ich habe also die Texturen zuerst über den Ressourcen-Manager von Delphi 2009 eingebunden (TGA konnte ich so nicht eingeben, also habe ich es später nochmal versucht, indem ich die Resource.rc bearbeitet habe) und dann mit LoadTexture geladen. Danach kommt entweder die Fehlermeldung, dass die Resource nicht gefunden wurde oder es kommt keine Fehlermeldung, dafür wurde die Textur dann aber offensichtlich nicht geladen.
Die Texturen wollte ich überhaupt erst aus der Resource laden, weil ich unter Windows 7, wenn ich mein Programm nicht als Administrator starte, sonst immer die Fehlermeldung "Dateizugriff verweigert" bekomme (obowohl die Ordner eigentlich nicht schreibgeschützt sind). Falls also dazu jemand eine Lösung wissen sollte, wäre das auch nicht schlecht . Das ganze ist nämlich als Referat für die Schule geplant und ich glaube nicht, dass mein Physiklehrer auf dem Schullaptop (mit Win Vista) Adminrechte hat...
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die ist wirklich sehr alt. Jan Horn kann außerdem auch keinen Support mehr geben und Weiterentwicklungs ist auch ziemlich ausgeschlossen. Wieso nimmst du nicht die glBitmap von Lossy (siehe Projekte-Thread).
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Resource Editor bei Delphi? Also früher gab es da mal so etwas wie einen Bildeditor mit dem man .res speichern konnte. Allerdings war das Teil mehr als Unbrauchbar. In 2006/2007 habe ich gar nichts dergleichen gefunden.
Entsprechend benutzt du ein externes Tool oder du benutzt den Resourcecompiler. Was das Laden der Resourcen angeht ist es wichtig, dass du den Resourcentyp richtig wählst. Der Typ ist eigentlich nur ein freier Text. Genau wie der Name auch. Die Resourcen werden aber aus der Kombination von beidem identifiziert. Alle deine Resourcen könnten also "BLAH" heißen, wenn sie nur immer einen anderen Typen hätten (macht man aber normal nicht, da der Typ zum unterscheiden der Resourcen da ist). Die Resourcenamen müssen immer großgeschrieben werden. XN Resource Editor kann auch Resourcen mit kleinen Namen erstellen. Aber die können anschließend nicht mehr gefunden werden. Den Resourcetypen "Bitmap" solltest du nicht verwenden, da dieser die abgelegten BMPs verändert, wodurch sie nicht mehr geladen werden können.
Bei der Textures ist es so, dass die ein bisschen gaga arbeitet. Anhand des übergebenen Dateinamen "erkennt" sie um welchen Bildtypen es sich handelt und benutzt dann 'TGA', 'JPEG', 'BMP' als Resourcetypen und den ersten Teil des Dateinamens (ohne Endung) als Resourcenamen. Das heißt in der RC müsstest du folgendes angeben "TEXTURE1 TGA "texture1.tga"". Beim Laden mit der Textures, dann "TEXTURE1.TGA" und LoadFromResource. Dann sollte er sie auch finden. Ich muss nicht erwähnen, dass das mit der glBitmap deutlich kompfortabler gelöst ist.
PS: Das mit Windows7 und Vista ist so eine Sache. Microsoft hat dort das Rechtesystem umgestellt. Teilweise werden die Verzeichnisse für jeden Benutzer virtualisiert.
OK, das Ding heist auch nicht Ressourcen-Editor. Ich meinte eigentlich das, was man unter Projekt Ressourcen findet. Die glBitmap.pas benutze ich nicht, weil mit Delphi 2009 ein paar Neuerungen kamen (mit Chars etc.) und die dann nicht funktioniert hat.
Zitat:
Das heißt in der RC müsstest du folgendes angeben "TEXTURE1 TGA "texture1.tga"". Beim Laden mit der Textures, dann "TEXTURE1.TGA" und LoadFromResource.
Wenn ich es so mache, wird die Textur nicht gefunden. Wenn ich aber LoadTexture('TEXTURE1',texture1,true); benutze, also ohne ".TGA", kommt keine Fehlermeldung, aber die Texturfläche bleibt dafür weiß.
Das "Bilder als Ressourcen"-Tutorial habe ich mir mal angesehen. Mit der bcc32.exe bekomme ich aber auch fehler...
Code:
CodeGear C++ 6.10 for Win32 copyright <c> 1993-2008 codeGear bildschirmeresource.rc: Error E2141 bildschirmeresource.rc 1: Declaration syntax error *** 1 errors in Compile ***
Das C++ bezieht sich wahrscheinlich auf die Sprache, womit die bcc32.exe gemacht wurde, nehme ich an. Hier dann nochmal meine BildschirmeResource.rc:
Achja: Eigentlich müsste es doch möglich sein, dass mein Programm unter Windows 7 auf seinen eigenen Ordner zugreifen kann, auch wenn ich es nicht als Admin ausführe und vor allem, wenn es nicht im Programme-Ordner lieght...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Lumpiluk hat geschrieben:
Die glBitmap.pas benutze ich nicht, weil mit Delphi 2009 ein paar Neuerungen kamen (mit Chars etc.) und die dann nicht funktioniert hat.
Hmmm. Okay. Hab ich wohl irgendwie aus den Augen verlohren das Problem. Der Anteil derer die Delphi 2009+ benutzen ist aber auch eher gering.
Lumpiluk hat geschrieben:
Wenn ich es so mache, wird die Textur nicht gefunden. Wenn ich aber LoadTexture('TEXTURE1',texture1,true); benutze, also ohne ".TGA", kommt keine Fehlermeldung, aber die Texturfläche bleibt dafür weiß.
Richtig. Wenn du das so machst, dann kann die Textures.pas keine Dateiendung finden und und ruft schlicht keinen Code zum Laden einer Textur auf.
Lumpiluk hat geschrieben:
Das "Bilder als Ressourcen"-Tutorial habe ich mir mal angesehen. Mit der bcc32.exe bekomme ich aber auch fehler...
Also ich muss gestehen, dass das bei mir Problemlos durchläuft. Hätte gedacht, weil die Resourcename nicht in "" eingefasst ist das es Probleme gibt. Aber frisst er alles. Font ist normal auch ein reservierter Begriff. Aber der befindet sich auch in Zeile 2 und nicht 1. Weswegen es das nicht sein kann. Versuch mal deine Resource in dem XN Resource Editor zu erstellen. Sonst wüsste ich so spontan nicht was der BRCC32 als Input haben will. So viel Auswahl gibt es ja nun auch nicht. Ich benutze aber (D2006/2007) noch einen älteren Resource Compiler.
Lumpiluk hat geschrieben:
Achja: Eigentlich müsste es doch möglich sein, dass mein Programm unter Windows 7 auf seinen eigenen Ordner zugreifen kann, auch wenn ich es nicht als Admin ausführe und vor allem, wenn es nicht im Programme-Ordner lieght...
Normal sollte es außerhalb des Programme Ordners in der Hinsicht gar keine Probleme geben. Und selbst innerhalb der Programme sollte das Öffnen klappen. Nur Schreibzugriffe sollten dort für jeden Benutzer virtualisiert werden.
Anstatt TGA solltest du in deiner bildschirmeresource.rc RCDATA nutzen.
Und mit Delphi2009 hatte ich auch nur Probleme bei jedem Modelloader usw. Das beste wäre umzusteigen auf eine ältere Delphiversion z.b. Delphi2007, das funktioniert bei mir einwandfrei
Mitglieder in diesem Forum: 0 Mitglieder und 15 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.