Änderung (Code hinzugefügt (
BPL-Projekt:
Code:
unit Interfaces;
interface
type
PointerByte = ^Byte;
type
IRF_Package = interface(IInterface)
['{19790208-2023-0802-0002-CAFEBABE0002}']
function DeCompressBuffer(str: String; len: Integer): Boolean;
function DeCompressAll: Boolean;
end;
implementation
end.
Code:
unit ResourceFiles;
interface
uses
Windows, Classes, SysUtils, Dialogs, Interfaces,
JvComponentBase, JvZlibMultiple,
...
type
TRF_Package = class(TInterfacedObject, IRF_Package)
public
function DeCompressBuffer(str: String; len: Integer): Boolean;
function DeCompressAll: Boolean;
constructor Create; overload;
destructor Destroy; override;
end;
implementation
constructor TRF_Package.Create;
begin
inherited Create;
end;
destructor TRF_Package.Destroy;
begin
inherited Destroy;
end;
...
end.
Änderung (Code hinzugefügt (EXE-Projekt:
Code:
procedure PrepareBitmapPackage;
var
MyPackage : IRF_Package;
MyGUID : TGUID;
H : HMODULE;
begin
H := 0;
try
try
H := LoadPackage(PChar(ExtractFilePath(
Application.ExeName) + 'ResPackage.bpl'));
if H = 0 then
begin
raise
Exception.Create(
#10 + 'Can not load
package: ResPackage.bpl' +
#10 + 'aborted.');
end;
MyGUID := StringToGUID(
'{19790208-2023-0802-0002-CAFEBABE0002}');
MyPackage := CreateComObject( MyGUID ) as IRF_Package;
if not Assigned(MyPackage) then
begin
raise
Exception.Create(
'can not
access Interface: IRF_Package');
end;
if not(MyPackage.DeCompressAll) then
begin
raise
Exception.Create(
'ResPackage.bpl error.');
end;
except
on E:
Exception do
begin
ShowMessage('
Exception:' +
#10 + E.CLassName +
#10 + E.Message );
Close;
end;
end;
finally
UnloadPackage(H);
end;
end;
Hallo,
nun habe ich erfolgreich ein
BPL-Projekt geschrieben.
Der Compiler hat automatisch dependcies (requeires Abschnitt) hinzugefügt und ohne Fehler
oder sonstigen Meldungen compiliert.
Auch das installieren in das
IDE System war erfolgreich (Instal packages...).
Ich kann in diesen Dialog weitere Packages sehen, die unterschiedliche Komponenten zur Verfügung stellen.
Zu jeden Eintrag steht in grau der Pfad.
Für meine
BPL-Datei habe ich diesen Pfad kopiert, und unter einer Anwendung im Kontext:
"LoadPackage" verwenden wollen.
Der Compiler mekkert auch hier nicht, und erstellt ein .exe Image.
Wenn ich nun das Image starte, kommt dann der Fehler bei diesen Code:
Code:
var
h: HMODULE;
begin
h := LoadPackage('E:\Pfad\
package.bpl');
if h = 0 then ShowError;
end;
der Fehler vom System: "Das angegebene Modul konnte nicht gefunden werden".
Dann habe ich in das Image geschaut und die Einträge: rtl70.bpl, und vcl70.bpl
gefunden.
Unter den Optionen ist das Häckchen (wo man Mit/Ohne Runtime Packages compilieren kann)
ausgegraut (kein Häckchen zu sehen).
Danach habe ich nach diesen zwei Dateien gesucht.
Aber ich konnte die im Installationsverzeichnis von Delphi nicht finden.
Unter C:\windows\system32 habe ich auch nichts gefunden.
Anwendungen lassen sich aber erstellen und ausführen (was recht komisch ist, da ja auch
Programme/Anwendungen rtl70.bpl und vcl70.bpl benötigen.
Von daher: kann mir einer einen Tipp geben, wo ich diese Dateien finden kann ?
Für sachdienliche Hinweise bin ich sehr dankbar.
Gruß, der paule (jaja, er war Bademeister