AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Bilder in DLL einbinden und aufrufen

Bilder in DLL einbinden und aufrufen

Ein Thema von Adler · begonnen am 23. Mai 2003 · letzter Beitrag vom 24. Mai 2003
Antwort Antwort
Adler

Registriert seit: 29. Apr 2003
Ort: Düsseldorf
30 Beiträge
 
Delphi 2006 Professional
 
#1

Bilder in DLL einbinden und aufrufen

  Alt 23. Mai 2003, 23:39
Hallo zusammen,

ich habe das Beispiel aus Library: Grafik / Sound / Multimedia - Bilder in DLL einbinden und aufrufen ausprobiert
Delphi-Quellcode:
var
  h :HINST;
  r :TResourceStream;
  j :TJpegImage;
  i :integer;
begin
  h := LoadLibrary('Bilder.dll');
  if h <> 0 then
  begin
    r := TResourceStream.Create(h, Bild1, 'Jpeg');
    j := TJpegImage.Create;
      try
        j.LoadFromStream(r);
        Image1.Picture.Bitmap.Assign(j);
      finally
        j.Free;
        r.Free;
      end;
  end;
  FreeLibrary(h);
end;
und unter WinXP funktioniert auch alles reibungslos. Versuche ich aber jetzt das ganze unter Windows98 so funktioniert es nicht mehr, da mir die Funktion LoadLibrary kein Handle auf meine DLL liefert. Ein Handle von einer EXE hingegen wird geliefert. Woran könnte das liegen?

MfG
Adler
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Bilder in DLL einbinden und aufrufen

  Alt 23. Mai 2003, 23:45
Zitat von Adler:
LoadLibrary('Bilder.dll');
Liegt die Bilder.dll im Systemverzeichnis oder im Windowsverzeichnis?

Wenn sie nämlich im selben Verzeichnis wie die EXE liegt, dann solltest du folgendes benutzen:
h := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'Bilder.dll'));
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 23. Mai 2003, 23:47
Moin Adler,

für den Fall, dass kein Handle zurückgeliefert wird, könntest Du mal

ShowMessage(SysErrorMessage(GetLastError)); aufrufen, um Dir den Grund für den Fehler anzusehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Adler

Registriert seit: 29. Apr 2003
Ort: Düsseldorf
30 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 23. Mai 2003, 23:49
Hallo jbg,

die DLL liegt zwar im gleichen Verzeichnis wie die EXE ich habe aber den kompletten Pfad der DLL übergeben und als Ergebnis hat h immer den Wert Null.
  Mit Zitat antworten Zitat
Adler

Registriert seit: 29. Apr 2003
Ort: Düsseldorf
30 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 24. Mai 2003, 08:58
Hallo Christian,

ShowMessage(SysErrorMessage(GetLastError)); liefert mir das angeblich zu wenig Speicher vorhanden ist. Ich muss dazu sagen das ich Win98 auf einem anderen Rechner laufen habe als WinXP. Vor dem Programmstart sind aber noch gut 32 MB Arbeitsspeicher frei so das es eigentlich kein Problem sein sollte eine DLL von 2,5 MB aufzurufen.

MfG
Adler
  Mit Zitat antworten Zitat
Adler

Registriert seit: 29. Apr 2003
Ort: Düsseldorf
30 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 24. Mai 2003, 15:18
Hallo zusammen,

es lag scheinbar wirklich nur an der Größe der DLL. Ich habe sie jetzt auf mehrere DLLs verteilt und jetzt funktioniert es. Wäre mir zwar lieber gewesen alles in eine DLL zu bekommen aber was soll man machen

Vielen Dank an jbg und Christian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 24. Mai 2003, 15:24
Wie groß war denn die eine DLL?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Adler

Registriert seit: 29. Apr 2003
Ort: Düsseldorf
30 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 24. Mai 2003, 15:38
2,5 MB
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz