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

Aktuelle Zeit: Fr Jul 18, 2025 04:56

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 41 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 14, 2005 22:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
also sofern ich alles richtig gemacht habe...
Code:
  1.  
  2.   h := LoadLibrary('lemon.dll');
  3.   myStream := TResourceStream.Create(h, '1', 'TGA');
  4.  
  5.   fTexture := tglbitmap2d.Create;
  6.   fTexture.LoadFromStream(myStream);


gibt "Ressource nicht gefunden" und ende...


EDIT:
Peinlich, peinlich - hab vergessen, die dll auf einzubinden...
dennoch:
Fehler RLINK32 Unsupported 16bit resource in file "blabla"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 16, 2005 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
okay, jetzt komme ich gar nicht mehr dazu, irgendeinen stream zu erstellen,
weil das programm gar nicht mehr compiliert wird...
sobald ich {$R lemon.dll} schreibe, meldet sich RLINK32 mit
Unsupported 16bit resource in file "blabla"

:cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 16, 2005 18:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du musst ja auch die Resource einbinden und nicht die DLL. Wenn du die Resourcen in deiner DLLhaben willst musst du die *.res in einer Unit in deiner DLL einbinden. Oder in der *.dpr.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 16, 2005 18:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
hab ich, denke ich, gemacht...

also eine .rc datei erstellen in der die tga's genannt werden
mit der brcc32.exe eine .res datei erstellt, die die tga's enthält
die .res datei in ein DLL Projekt eingebunden und das Projekt compiliert
dann hab ich eine dll datei, die die tga bilder enthält
(und noch ein bisschen mehr, wenn man sie mit deinem resource explorer anguckt)
ich dachte, die dll müsste ich jetzt mit meinem hauptprojekt verbinden, damit
ich darauf zugreifen kann... ah moment...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 16, 2005 19:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du musst die DLL dann in deinem Hauptprogramm mittels LoadLibrary laden. Würde dir aber wohl empfehlen, dass du die *.res am besten mit dem Resource Explorer erstellst. Ist wesentlich kompfortabler.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 16, 2005 19:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
ja, mit loadlibrary, darauf bezog sich das "moment mal" in meinem vorherigen post, da fing der groschen gerade an zu fallen :)
mit TResourceStream.Create geht es weiterhin nicht, dafür aber mit TResourceStream.CreateFromId - ist mir wurscht, so lange es geht - dat muss ich mir n test programm schreiben um zu sehen, ob es geht...
naja, ich habe über 900 tiles, die alle in den resource explorer zu laden, ich weiß nicht - weil strg-a nicht geht im öffnen dialog
da schreib ich mir vll besser ein script, dass eine textdatei vollschreibt, mal sehen...

hehe, wenn ich statt der Textures.pas einfach in der uses die glBitmap eintrage ohne code anzupassen passieren komische sachen...

Ich danke dir für deine Geduld mit mir!!



EDIT:
Jesses, ich glaub ich bin am Ziel angekommen!! Yeah!!! Jetzt kann es weitergehen
Hach ja, ich freu mich

DANKE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 17, 2005 12:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
doppelreim hat geschrieben:
hehe, wenn ich statt der Textures.pas einfach in der uses die glBitmap eintrage ohne code anzupassen passieren komische sachen...

Ja das mag durchaus sein. Ist ja nicht das gleiche sondern soll nur zum Umstiegshilfen dienen. Wenn die textures nicht so verbreitet wäre, dann hätte ich auf die Methoden wohl ganz verzichtet und nur den Objekt Orientierten Weg eingebaut. :twisted:

Ach ja. Das mit LoadFromResourceID. Das hatte ich fast vergessen. Du kannst natürlich auch alle Resourcen als Zahlen ablegen und dann musste da ne ID übergeben. Das ist alles ein bisschen wirr das mit den Resourcen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 17, 2005 13:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
ja, ich brauchs unbedingt mit zahlen - meine ganze engine beruht auf einen großen haufen zahlen

so, dann kommt jetzt die blöde aufgabe, den ganzen code umzustellen und einen neuen weg zu finden, die kollisionsinfo mit einzubringen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 18, 2005 02:12 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Könnt ihr hier jetzt mal ne Schrittweise Anleitung abgeben, wie man Grafikdateien so verpackt, dass net jeder Wald und Wiesendepp mit Paint die Grafiken verunstalten kann?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 18, 2005 09:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
ich werd's gerne versuchen...

also die bilder - oder sounds, icons, sätze, was du willst - werden in eine ressourcen-datei gesteckt. die hat die dateiendung .res
um eine solche zu erstellen gibt es mehrere möglichkeiten...

1.) Du benutzt das Programm Resource Explorer, den Link hat Lossy hier gepostet. Das ist eigentlich recht einfach und speichert dir deine Ressourcensammlung direkt als .res Datei

2.) Die andere Möglichkeit ist etwas mehr Arbeit: die schnappst dir Notepad oder sonst irgendeinen Editor und erstellst eine Datei mit folgendem Format:
<Ressourcenbezeichner> <Resourcentyp> <Pfad zur Datei>
beispielsweise:
myCharTex BITMAP char.tga

Ressourcenbezeichner: ist der Name, den du der Ressource gibst. Statt einem String kannst du auch ne Zahl hinschreiben, also
10 BITMAP holla.bmp
ich mache das so, weil ich in meinem Programm lieber mit nem Haufen geordneter Zahlen arbeite, als mit nem Haufen Strings

Ressourcentyp: Es gibt einige vordefinierte, die hat Lossy auch hier irgendwo erwähnt. Für alle Sachen, die nicht explizit nen eigenen Typ haben gibt es RCDATA, das wär dann wohl allgemeine Datenvielfalt, oder so ;)

Pfad zur Datei ist selbsterklärend denke ich. Kann sein, dass man Gänsefüsschen setzen muss, keine Ahnung - testen!

Jetzt hast du im Editor zeilenweise deine Ressourcen angegeben und speicherst das Werk erstmal als .rc Datei ab.
Dann gibt es in deinem Delphi Verzeichnis einen Ordner "bin" und in selbigem eine Datei brcc32.exe - die brauchen wir jetzt.
Die .rc Datei enthält ja nur die Dateinamen zu den Ressourcen die du haben willst. brcc32.exe nimmt sich diese Datei und packt die darin angegebenen Ressourcen in eine .res Datei
Dazu ruft man die brcc32 in der Kommandozeile auf und übergibt als Parameter den Pfad zur .rc Datei
Ipp Zipp Zapp, fertig ist die .res Datei

Hehe, 2. ist echt länger als 1. aber dafür gibts ja auch n bisschen Hintergrund wissen...
Weiter im Text. Von hier aus gibts wieder mehrere Wege ich beschreibe aber nur meinen. Ich wollte die Ressourcen in einer eigenen Datei haben, unabhängig von der Hauptanwendung. Wenn man die .res Datei in das Hauptprojekt eingebunden hätte, wäre sie beim compilieren mit in die exe hineinkompiliert geworden wurden hätten. (wird sain gevezz, na wer kennt's?)
Weil wir das aber nicht wollen, gehen wir her und erstellen in Delphi ein neues DLL Projekt.
Den vorgeschrieben Quelltext ersetzen wir mit:
Code:
  1. library lemon;
  2.  
  3. {$R lemon.RES}
  4.  
  5. begin
  6. end.

wobei lemon.RES natürlich auf euren .res Datei Dateinamen angepasst werden sollte ;)
Wunderbar, jetzt speichern wir das Projekt, compilieren es und der ein oder andere kann auch "Hosianna" rufen,
denn jetzt haben wir eine wunderschöne .dll Datei, die all unsere Resourcen enthält. Und ich denke, jeder gewöhnliche Wald und Wiesen Depp, wird sich denken "Möh? DLL - Wasn datt da? Kann man das essen?? Lass ich mal lieber in Ruhe"
Hehe, aber wir sind noch nicht am Ziel... wir müssen die Daten ja auch wieder aus der DLL rausbekommen.
Da brauchen wir erstmal eine Variable vom Typen Papst ääh, Cardinal.
Der weisen wir mittels
Code:
  1.  h := LoadLibrary('lemon.dll');
die eben erstelle DLL Datei zu.
Wenn du jetzt in LoadFromRessource oder ähnlichen Funktionen als Parameter eine Instance angeben sollst, ist das unsere Cardinal Variable, die ja auf die DLL zeigt.
Bei der glBitmap.pas laden wir allerdings immer aus Streams (für mich ein dunkles Kapitel, aber ich werde auch das versuchen zu schreiben ;))
Man nehme
Code:
  1. var myStream: TResourceStream
  2. var h: Cardinal;
  3. var foo: TglBitmap2D;
  4.  
  5. h := LoadLibrary('lemon.dll');
  6. myStream := TResourceStream.CreateFromID(h, 10, RT_RCDATA);
  7. foo.LoadFromStream(myStream);
  8. foo.GenTexture;


Ich hab den Resource Stream from ID created, es geht auch nur mit Create, dann muss man, denke ich, nen String angeben, aber ich arbeite wie gesagt lieber mit Zahlen.

Sohohohoho, ich hoffe, ich habe alles erwähneswerte erwähnt und wenn es jemandem hilft, dann bin ich mächtig stolz, auch mal ne Antwort gegeben zu haben, statt immer nur zu Fragen - Yeah!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 18, 2005 13:37 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Das muss jetzt aber sofort ab ins Wiki!

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 19, 2005 14:14 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Find ich auch. Doppelreim schreib hier mal einen schönen Wiki-Artikel rein: http://wiki.delphigl.com/index.php/Techniken_und_Algorithmen#Sonstiges

Wenn du noch keine Erfahrungen hast mit Wiki dann findest du hier die wichtigsten Wikicodes erklärt: http://wiki.delphigl.com/index.php/DGL_Wiki:Editierhilfe

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 19, 2005 20:29 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Damit kann man übrigens auch wunderbar solche Icon-Sammlungen anlegen, wie man sie in Windows findet.

Legt ihr eine Verknüpfung z.B. zum Explorer auf dem Desktop an, so könnt ihr ja auch ein anderes Symbol auswählen. In dem dazugehörigen Dialog wählt ihr als Datei aber nicht icon.ico aus sondern z.B. sysicons.dll ;) Dort habt ihr dann gleich mehrere Icons zur Auswahl ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 30, 2005 17:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 29, 2005 21:11
Beiträge: 88
Wohnort: Bonn
so... bin leider jetzt erst dazu gekommen, den Artikel im Wiki zu schreiben...
Aber jetzt isser da 8)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 01, 2006 23:51 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Super! Der Artikel hat ja Tutorialzüge. Finds ganz toll, dass du das gleich vernünftig gemacht hast.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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 ]