Autor Beitrag
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 26.04.03 15:57 
Hi!

Bin nicht sicher, ob sowas mal im forum stand.. teile davon auf jeden fall.

ich will in einer DLL alle resourcen, die ich für ein programm benötige verstauen. Also Icons, Bitmaps, Wavesound, Strings.

um das alles getrennt bearbeiten zu können, und einzelne komponenten (z.B. die Wavesounds) wieder rausschmeißen zu können, will ich getrennt RES-Files. Damit kann ich einfach das, was ich nicht mehr brauche aus der DLL rausschmeißen.

Bis hierhin ist noch kein problem.

Einbinden ist auch klar

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
library Resources

...
{$R Sounds.res}
{$R Strings.res}
{$R Icons.res}
...
implementation

end.


Das ganze compiliert, ergibt meine DLL.

Wie kann ich jetzt beim Auslesen der Res-Files unterscheiden, ob ich einen WaveSound oder ein Icon oder einen String auslese? Gibt es dafür verschiedene Routinen, weiß Delphi, wo welche Resource in welchem File stehen?

Ich kann mir das nicht so wirklich vorstellen, wie das funktioniert...

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.04.03 16:31 
Die stehen alle in der DLL und nicht in den res-Dateien, die du erstellt hast. Kuck dir doch mal deine DLL mit einem Ressourcen-Hacker an.
Mike_C Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 26.04.03 20:15 
Doch noch ein problem...

ich hab jetzt eine DLL, mit 2 eingebundenen RES-Files.
Eins enthält strings, ein anderes Icons.

an die Icons komme ich (von außerhalb de DLL) mit

ausblenden Quelltext
1:
2:
3:
4:
5:
var
  n: integer;
...
Icon.Handle := ExtractIcon(Hinstance, 'Resource.dll', n);
...


ran.
Allgemein Strings aus einer Resourse-Datei auslesen, kann ich damit:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function GetResString(Nr: integer): string;
var p: PChar
begin
  p := StrAlloc(256);
  LoadString(HInsance, nr, p, 255);
  result := p;
  StrDispose(p);
end;


Das funktioniert aber nicht, wenn ich mich nicht in der DLL befinde, also wenn ich GetResString(nr) von dem Programm aus aufrufe, in dem ich die Resourcen aus Resource.dll auslese. Wie geht das nun? Muss ich da eine DLL-interne Funktion schreiben, oder kann ich das umgehen?

Ach nebenbei noch was: Müssen Icon-Dateien, die ich in ein Res-File verpacke immer quadratisch sein? Meine Icons sind nämlich nach dem Auslesen aus der DLL verzerrt.

Greetz, Mike_C

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.04.03 20:19 
Kuck mal, wie du es bei den Icons gemacht hast. Du mußt hInstance der DLL mit übergeben. hInstance ist das handle der DLL welches du mit LoadLibrary bekommst.
Mike_C Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: Sa 26.04.03 20:22 
THX! Genial!
hat noch wer einen Tipp wegen dem ICON-Prob?
Damit wäre mir sehr geholfen... :-)

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?