Seite 2 von 4

Verfasst: 04.06.2008 19:06
von Kiffi
Marie23 hat geschrieben:Musste die Datei in den User Libraries Ordner verschieben
http://www.purebasic.fr/german/viewtopi ... 370#200370

wer lesen kann, ... ;-)

Grüße ... Kiffi

Verfasst: 04.06.2008 19:37
von Marie23
Ok
ich hätte noch 2 blöde Fragen zu UDRES :oops:

1. Kann ich eine DLL direkt aus der Resource in den Speicher laden und die Funktionen ganz normal verwenden? (Ohne CallFunctionFast(UDRes_GetPackFunction(..)))

2. Kann ich eine Datei aus der RES Datei auf den PC entpacken?

Verfasst: 04.06.2008 19:56
von ts-soft
Marie23 hat geschrieben: 1. Kann ich eine DLL direkt aus der Resource in den Speicher laden und die Funktionen ganz normal verwenden? (Ohne CallFunctionFast(UDRes_GetPackFunction(..)))
UDRes_GetFunction bzw. UDResGetPackFunction entspricht dem GetFunction
Befehl in PB. Lediglich das laden der DLL entfällt (ist also nur einfacher), man
sollte aber besser Prototypes nutzen! Einfach in der PB Hilfe nachschauen
Marie23 hat geschrieben: 2. Kann ich eine Datei aus der RES Datei auf den PC entpacken?
Schon mal in die Hilfe geschaut? UDRes_Save und UDRes_SavePack sollten
doch selbsterklärend sein.

PS: Wenn die Hilfe im richtigen Ordner ist, kann man sie von der PB-IDE aus
aufrufen, auch Kontextsensitiv

Verfasst: 04.06.2008 19:59
von Kiffi
ts-soft hat geschrieben:PS: Wenn die Hilfe im richtigen Ordner ist, kann man sie von der PB-IDE aus
aufrufen, auch Kontextsensitiv
BTW: UDRes_Create() ist nicht als Topic in der Hilfe vorhanden.

Grüße ... Kiffi

Verfasst: 04.06.2008 20:14
von ts-soft
Kiffi hat geschrieben:
ts-soft hat geschrieben:PS: Wenn die Hilfe im richtigen Ordner ist, kann man sie von der PB-IDE aus
aufrufen, auch Kontextsensitiv
BTW: UDRes_Create() ist nicht als Topic in der Hilfe vorhanden.

Grüße ... Kiffi
Bild

:mrgreen:
Also Leute, was ist bei euch alles Kaputt :lol:

Verfasst: 04.06.2008 20:20
von Kiffi
ts-soft hat geschrieben::mrgreen:
mh, hätte schwören können, dass die Help des Zips, welches ich mir grade im
Büro gezogen habe, anders aussah...

Mal schauen, morgen bin ich schlauer ;-)

Grüße ... Kiffi

Verfasst: 04.06.2008 20:27
von ts-soft
Kiffi hat geschrieben:Mal schauen, morgen bin ich schlauer ;-)

Grüße ... Kiffi
Jeden Tag biste schlauer, wenn Du postings von mir liest :mrgreen:
Hab die Hilfe vor ein paar Tagen geändert, aber nur die Structure verfeinert.
Also in Creation und Using aufgeteilt, Inhaltlich hat sich nichts geändert,
bis auf ein bissel einfärben :wink:

Verfasst: 04.06.2008 21:45
von Marie23
Okay, danke.

Dann entpack ich die DLL aus der RES und lad sie dann ins Programm und lösch sie am Ende wieder.

Verfasst: 04.06.2008 22:08
von ts-soft
Marie23 hat geschrieben:Dann entpack ich die DLL aus der RES und lad sie dann ins Programm und lösch sie am Ende wieder.
Wenn die DLL die einzige Resource ist und Du sie nur wieder herstellst, bzw.
die DLL nicht allzu groß ist, lohnt es evtl. garnicht die Lib zu nutzen.

Die Lib dient ja als ersatz für IncludeBinary, weil dadurch Resourcen
Speicher gespart wird (50%)

Aber bei nur einer DLL wären alle Vorteile fürn Arm :mrgreen:

Dann kannste es auch so machen:

Code: Alles auswählen

DataSection
  DLLstart:
  IncludeBinary "MyDLL.dll" ; <--- anpassen
  DLLend:
EndDataSection

Procedure SaveDLL()
  Protected DLLPath.s = GetTemporaryDirectory() + "MyDLL.dll" ; <--- Namen anpassen
  Protected File.l = CreateFile(#PB_Any, DLLPath)
  
  If File
    WriteData(File, ?DLLstart, ?DLLend - ?DLLstart)
    CloseFile(File)
    ProcedureReturn #True
  EndIf
  
EndProcedure

Procedure DeleteDLL()
  Protected DLLPath.s = GetTemporaryDirectory() + "MyDLL.dll" ; <--- Namen anpassen
  
  If DeleteFile(DLLPath)
    ProcedureReturn #True
  EndIf
EndProcedure
Gruß
Thomas

Verfasst: 04.06.2008 22:26
von Kaeru Gaman
der unterschied scheint nicht ganz klar geworden zu sein....

eine DLL ist eine Befehlsbibliothek, die man extra einbinden muss,
und gesondert ansprechen muss, und dann stehen einem alle Befehle der Lib zur verfügung.

eine Userlib stellt eine Befehlsbibliothek befehlsweise zur verfügung,
es wird immer nur der code als SubProcedure in die Exe eingebunden,
die auch aufgerufen wird.
...als nachteil wird der originalcode weniger kompatibel:
man muss die selbe UserLib im selben Ordner haben, um den Hauptcode compilieren zu können.
und bei Versionswechsel der Hauptlibs erweisen sich viele UserLibs als überarbeitungsbedürftig.