Frage deutsch
~~~~~~~~~~~~~~
Was ist eine QLB (Quick Library) ?
 

Question English
~~~~~~~~~~~~~~
What's a QLB (Quick Library) ?
 

Antwort 1
~~~~~~~~
[ von Helium (
m.beckah*gmx.de ) im QB-Forum, 26.6.2002 ]
Eine Quick Library ist eine ->
Bibliothek, also eine Sammlung von FUNCTIONs und SUBs, die der QuickBasic-Interpreter laden und ausführen kann. So kann man einen Teil seines Programms schon wärend der Entwicklung in der QuickBasic-Entwicklungsumgebung (IDE) vorkompilieren und die volle Geschwindigkeit compilierten Codes nutzen. Auf diese Weise kann man auch in anderen Sprachen (z.B. C oder ASM) geschriebene Funktionen innerhalb der IDE verwenden. Das QLB Format ist ein QuickBasic eigenes Format und ist im Gegensatz zu dem .LIB-Format normaler -> Bibliotheken nicht standardisiert.
 

Antwort 2
~~~~~~~~~
[ von Thomas Antoni, 23.8.2002 ]
 
*** Was ist eine QLB und was ist der Unterschied zu einer normalen LIB-Bibliothek?
QLB steht für "Quick LiBrary". Das ist eine QuickBasic - -> Bibliothek, die im Gegensatz zu "normalen" Bibliotheken bereits im direkt ausführbaren Maschinencode vorliegt und nicht im -> Objektcode, der erst durch einen Linkvorgang mit dem Hauptprogramm zusammengebunden werden muss (siehe unter -> linken ).
 
Bei QuickBasic haben Quick Libraries die Dateiendung .QLB, während normale Bibliotheken die Dateiendung .LIB haben.
 
*** Die mit QuickBasic mitgelieferte QB.QLB
Du kannst QLBs selber erzeugen oder mit QuickBasic mitgelieferte QB.QLB verwenden. Bei Programmen, die den CALL ABSOLUTE Befehl enthalten (z.B. viele Mausroutinen) ist das Einbinden der QuickLibrary QB.QLB zwingend erforderlich. QuickBasic muss hierzu mit QB /L meinprog.bas aufgerufen werden.
 
*** Die Erstellung eigener QLBs
Doch nun zu den vom Programmierer selbsterstellten QLBs: Bei Großprojekten teilt man das Gesamtprogramm üblicherweise in abgeschlossenen Untereinheiten, die so genannten Module auf. Diese modulare Programmierung wird von QuickBasic stark unterstützt. Unter Anderem auch durch die durch die QuickLibraries.
 
Wenn Du mehrere Programmteile - typischerweise eine Anzahl von ->
SUBroutinen und -> Funktionen - fertig entwickelt und ausgetestet hast, kannst Du diese kompilieren und daraus eine QuickLibrary erzeugen. Das Resultat: In der erzeugten QuickLibrary befindet sich ein Großteil Deines Programms fertig kompiliert. also als unmittelbar ausführbares -> Maschinensprache - Programm . Und diese QuickLibrary kannst Du beim Aufruf von QuickBasic "resident", d.h. jederzeit im Hauptspeicher verfügbar, mitladen. Und zwar ohne ständige Neukompilation, denn sie liegen ja bereits in ausführbarer Form vor!
 
Dein Gesamtprogramm inklusive der in die QLB ausgelagerten Teile kannst Du über die F5-Taste oder "Ausführen | Start" interpretativ abarbeiten lassen - und das ohne Neukompilation und ohne die Programmteile zu ->
linken . Das ist der Unterschied zu einer "normalen" -> Bibliothek . Nach jeder Änderung wird nur noch derjenige Programmteil kompiliert, an dem Du gerade arbeitest und an dem sich tatsächlich etwas geändert hat.
 
Willst Du aus Deinen in die QuickBasic-Programmierumgenung geladenen SUBs und FUNCTIONs eine QuickLibrary namens XXX.QLB erzeugen, so gibst Du
<Ausführen | Bibliothek erstellen ... xxx>
 
ein. Nach Verlassen der Programmierumgebung musst Du diese dann mit
QB /L xxx.qlb neu starten und hast dann alle in XXX.QLB enthaltenen SUB/FUNCTIONs für Dein Anwenderprogramm verfügbar.
 
*** Kleines Beispiel für die Erstellung einer QLB
Angenommen, Du hast folgendes Programm HOCH2.BAS estellt, welches nur eine FUNCTION beinhaltet, welche ebenfalls HOCH2 heißt und die übergebene Zahl a als Potenz von 2 zurückliefert:
 
'HOCH2.BAS
'von Thomas Antoni, 23.8.02
DECLARE FUNCTION hoch2 (a)
FUNCTION hoch2 (a)
hoch2 = 2 ^ a
END FUNCTION
 
Mit <Ausführen | Bibliothek erstellen | hoch2> kannst Du jetzt hieraus die QuickLibrary HOCH2.QLB erstellen.
 
Jetzt beendest Du die Entwicklungsumgebung und rufst gleich wieder den QickBasic 4.5 Compiler über die Kommandozeile wie folgt auf:
QB /L HOCH2.QLB
 
Dadurch wird beim Starten der Entwicklungsumgebeung die neuerstellt QLB mit in den Hauptspeicher geladen. In der QB-Entwicklungsumgeung gibst Du jetzt das folgende Programm TABELLE.BAS ein, das eine Tabelle der Potenzen von 2 von 2^0 bis 2^16 anzeigt:
 
'TABELLE.BAS
'von Thomas Antoni, 23.8.02
DECLARE FUNCTION hoch2 (a)
CLS
FOR i = 0 TO 16
PRINT hoch2(i)
NEXT
SLEEP
 
Die obigen Beispielprogramme HOCH2.BAS/QLB und TABELLE.BAS/EXE stehen im Verzeichnis Progs\QLB.ZIP zur Verfügung sowie online unter www.antonis.de/faq/progs/qlb.zip .
 
Dieses Programm ruft die in der QLB enthaltene FUNCTION HOCH2 auf und kann sogar über <Ausführen | EXE-Datei erstellen ...> zu einem eigenständigen EXE-Programm kompiliert werden, das die QLB HOCH2.QLB beinhaltet.
sind übrigens im Verzeichnis QLB/ der Beispielprogramm-Sammlung enthalten.
 
 
*** "normale" QuickBasic .LIB-Bibliotheken
Eine normale QuickBasic-Bibliothek hat die Dateiendung .LIB und ist nichts anderes als eine Sammlung fertig kompilierter -> Objektprogramme, die zu einer einzigen Datei zusammengebunden sind. Die SUB/FUNCTIONs liegen also im Gegensatz zur QuickLibrary nicht im Maschinencode, sondern im Objektcode vor. Das Zusammenbinden der Objektmodule erfolgt mit Hilfe des in der Entwicklungsumgebung verfügbaren Linkers oder von der Kommandozeile aus mit Hilfe des QuickBasic-Tools LINK.EXE .
 
Im Gegensatz zu den QLBs ist das Dateiformat normaler Bibliotheken bai allen Programmiersprachen weitestgehend gleich aufgebaut, so dass Du in QuickBasic-Programme auch Bibliotheken einbinden kannst, die in C oder in Assembler geschrieben sind.
 
 
 
 
 

[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]