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 ]