|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 24.11.2004, 21:09 Titel: Librarys |
|
|
Ich habe keine Ahnung wie man mit Libarys umgeht. Kann mir mal jemand sagen wie man die einbinden kann und so? |
|
Nach oben |
|
|
Thomas Antoni
Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 24.11.2004, 21:53 Titel: Dazu habe ich mir für d.QB-MonsterFAQ Folgendes vorgemerkt |
|
|
Dazu habe ich mir für die QB-MonsterFAQ Folgendes vorgemerkt
Code: | --------------------------------------------------------------------------------
Frage deutsch
~~~~~~~~~~~~~~
Was sind Bibliotheken und wie gehe ich damit um?
((
Ergänzung zur bestehenden Frage
Noch prüfen: stimmt die untenstehende Anmerkung, dass man nicht 2 QLBs
zusammenfügen kann?
))
Antwort 1
~~~~~~~~~~
[ von Andre Klein ( www.iconsoft.de), ergänzt von Thomas Antoni, 22.1.2004 - 7.5.2004 ]
+-------------------------------------------------------------------------------
| Bibliotheken in Qbasic
| Autor: Andre Klein
+-------------------------------------------------------------------------------
*** Was ist eine Bibliothek?
--------------------------------------------------------------------------------
Eine Bibliothek ist eine Sammlung von SUB's, FUNCTION's und/oder TYPE's die in
einer externen Datei gespeichert sind. Diese Datei nennt man Bibliothek (engl.
"Library"). Bibliotheken kann man nur in QuickBASIC (z.B. V4.5), nicht in QBasic
1.1 verwenden.
Bei QuickBASIC gibt es zwei Arten von Bibliotheken: "Normale Bibliotheken
(Dateiendung .LIB) und Quick-Bibliotheken (.QLB).
Die Unterschiede zwischen QLB- und LIB-Bibliotheken kannst Du gelegentlich im
Eintrag "Was ist der Unterschied zwischen LIB- und QLB-Bibliotheken?" nachlesen.
Wir wollen uns hier zunächst nur mit den QLB-Bibliotheken (engl. "QuickLibries")
befassen.
*** Warum sollte ich eine Bibliothek benutzen?
--------------------------------------------------------------------------------
Bibliotheken kann man einsetzen wenn man z.B. sehr viele SUB's geschrieben hat
die man sehr oft auch in anderen Programmen benötigt. Ohne Bibliothek müßtest Du
immer wieder alle SUB's in Dein neues Programm schreiben oder eine "Blanko"-
Datei haben. Das kostet jede Menge Zeit und ist aufwendig! Wenn Du aber eine
Bibliothek hast, in der diese ganzen SUB's drin stehen, dann brauchst Du diese
nur einmal laden und kannst dann alle SUB's benutzen die dort gespeichert sind!
Und das ist doch viel bequemer oder?
Ein weiterer Grund für den Einsatz von Bibliotheken wäre der, das Du vieleicht
Dein e SUB's an Freunde, Bekannte und Unbekannte weitergeben möchtest. Und da ist
eine Bibliothek besser als ein Quellcode-Programm, aus dem sich derjenige dann
die ganzen SUB's rauskopieren müßte! Ein weiterer Vorteil ist der, dass der
Quellcode selber in einer Bibliothek nicht erkennbar ist! Das heißt, Du schreibst
jetzt z.B. eine Super-SUB und möchtest anderen die Funkion zeigen. Da Du aber
willst, dass keiner wissen soll, wie Du das gemacht hast, gibst Du natürlich nur
die Bibliothek weiter, weil dort der Quellcode ja nicht mehr erkennbar ist!
Anwendungen für Bibliotheken sind z.B. GRAFIK-SUB's, SOUND-SUB's etc. Also
solche SUB's die man wirklich nur einmal schreibt und dann immer wieder
unverändert benutzt.
Es gibt im Internet auch jede Menge guter Bibliotheken, die Du in Deinen
Programmen verwenden kannst und die Dir viel Programmierarbeit abnehmen. Da gibt
es z.B. Multimedia-Bibliotheken mit Grafik- und Sound-Funktionen für den
Spieleentwickler sowie Toolboxen für die Programmierung allgemeiner Anwendungen.
*** Wie lade ich eine QLB-Bibliothek?
--------------------------------------------------------------------------------
Eine Bibliothek kann erst ab der QuickBASIV-Version 4.0 geladen werden. Um eine
Bibliothek zu laden ruft man QB einfach mit der Option /L auf (L = Library, zu
deutsch Bibliothek). Die ganze Befehlszeile sieht dann so aus:
QB.exe /L namederbibliothek.QLB
Bei diesem Aufruf muß man darauf achten, dass sich die Bibliothek (die QLB-
Datei) im aktuellem Verzeichnis befindet oder der Pfad zur Bibliothek angegeben
wird. Ansonsten kommt die Fehlermeldung, dass die Bibliothek nicht gefunden
wurde. Wenn man QB /L ohne den Namen einer Bibliothek eingibt, dann nimmt QB
automatisch die QB.QLB die sich im QB-Hauptverzeichnis befindet. Dort sind die
SUB's CALL ABSOLUTE, CALL INTERRUPT und CALL INTERRUPTX definiert.
*** Wie benutze ich SUB'S wenn ich die Bibliothek geladen habe?
--------------------------------------------------------------------------------
Nach dem Start von QB.EXE mit dem obenstehenden Kommando siehst Du ein leeres
QB-Editorfenster.
Wenn Du jetzt eine SUB aus Dein er Bibliothek aufrufen willst dann machst Du das
mit dem gleichen Befehl mit dem Du auch SUB's aufrufst die direkt in Dein em QB-
Programm enthalten sind. Also mit CALL.
z.B. CALL meinsub (option1%, option2%, wert1%)
WICHTIG: Wenn Du NUR die QLB-Datei geladen hast, dann mußt Du IMMER ein CALL für
alle QLB-SUBs benutzen!!! Und FUNCTION's funktionieren leider auch nicht. Damit
Du kein CALL brauchst und FUNCTION's funktionieren mußt Du sie korrekt am
Programmanfang mit den Übergabeparametern deklarieren. Oder Du fügst eine "BI"-
Datei ein, die die erforderlichen Deklarationen enthält.
*** Was ist eine BI-Datei?
--------------------------------------------------------------------------------
Wenn Du ein QB-Programm schreibst und SUB's anlegst, dann schreibt QB automatisch
an den Anfang Dein es Programmes einige DECLARE-Anweisungen. Das gleiche passiert
auch bei FUNCTION's. Und eine BI-Datei enthält nichts anderes als diese DECLARE-
Anweisungen, und wenn man sie braucht auch TYPE's. Ansonsten keinerlei Quellcode.
Bei fertigen Bibliotheken, die Du im Internet herunterladen kannst, wird die
.BI-Datei häufig mundgerecht mitgeliefert.
*** Wie lade ich eine BI-Datei?
--------------------------------------------------------------------------------
um eine BI-Datei zu laden musst Du in Dein em QUELLCODE-Programm Folgendes
schreiben:
REM $INCLUDE: 'namederbidatei.BI'
Diese Datei muss sich im aktuellen Verzeichnis befinden, oder es muß der Pfad zu
der Datei mit angegeben werden. Wenn eine BI-Datei zusätzlich zu der
dazugehörigen QLB geladen wird, brauchst Du auch kein CALL mehr vor Dein e SUB-
Aufrufe schreiben und FUNCTION's funktionieren dann auch problemlos. Ein
Beispiel für eine BI-Datei ist die QB.BI im QB-Hauptverzeichnis.
Der Metabefehl $INCLUDE bewirkt, dass der Inhalt der angegebenen Datei quasi in
den Quelltext eingefügt ("inkludiert") wird.
*** Wie erstelle ich eine Bibliothek?
--------------------------------------------------------------------------------
Um eine Bibliothek erstellen zu können, brauchst Du theoretisch mindestens QB
V4.0. QB V4.0 kann zwar Bibliotheken erstellen, produziert bei mir aber immer
einen Fehler. Deshalb benutze ich QB V4.5. Vorgangsweise:
1. schreibe ein QB-Programm mit allen SUB's, FUNCTION's und TYPE's die Du später
in Dein er Bibliothek haben möchtest.
2. wenn Du das gemacht hast und alles funtioniert, dann gehe auf AUSFÜHREN und
dann auf BIBLIOTHEK erstellen.
3. Gib einen Namen für die Bibliothek ein. z.B. "TEST" . Die Bibliothek heißt
dann TEST.QLB.
4. Das Kreuz bei DEBUG-CODE ERSTELLEN kannst, musst Du aber nicht machen. Das
dient nur zur Fehlerbehandlung in Dein er Bibliothek während der Testphase.
5. Wenn das erledigt ist, gehst Du auf BIBLIOTHEK ERSTELLEN oder auf BIBLIOTHEK
ERSTELLEN UND BEENDEN und drückst ENTER.
6. Jetzt kommt ein schwarzer Bildschirm mit jeder Menge Informationen über das
Erstellen der Bibliothek. Dort zeigt QB dir auch an, ob irgendwelche Fehler
aufgetreten sind.
7. Wenn QB keine Fehler gefunden hat und alles geklappt hat, dann müsste sich
jetzt im Verzeichnis eine TEST.QLB und eine TEST.LIB befinden. Die QLB-Datei ist
Dein e fertige Bibliothek. Die LIB-Datei ist eine Art Zwischencode, in der zwar
alle SUBS usw. drinstehen, aber QB kann sie nicht benutzen. Sie erfüllt einen
anderen Zweck, zu dem ich später noch kommen werde. Damit ist die Bibliothek
fertig.
Was wir jetzt noch brauchen ist eine BI-Datei für unsere Bibliothek.
*** Wie erstelle ich eine BI-Datei?
--------------------------------------------------------------------------------
um eine BI-Datei zu erstellen, markierst Du in Dein em QB-Programm alle DECLARE-
und TYPE-Anweisungen. Gehst auf BEARBEITEN und KOPIEREN. Dann gehst Du auf DATEI
und NEU. Dort fügst Du die soeben kopierten DECLARE-Anweisungen ein. Dann DATEI
-> SPEICHERN UNTER. Dort gibst Du den Namen für Dein e BI-Datei ein und
speicherst das ganze. WICHTIG: schreibe .bi unbedingt dazu sonst speichert QB es
als BAS-Datei. Das wars dann auch schon. Jetzt hast Du eine fertige QLB-Datei
mit der dazugehörigen BI-Datei. Diese kannst Du jetzt wie bei "Wie lade ich eine
Bibliothek?" beschrieben in Dein em Programm verwenden.
*** Was hat es mit der LIB-Datei auf sich?
--------------------------------------------------------------------------------
Eine LIB-Datei entsteht wenn man mit QB eine Bibliothek erstellt. In ihr sind,
genauso wie in der QLB-Datei, auch alle SUB's und FUNCTION's gespeichert. Aber
QB kann mit einer LIB nichts anfangen, da eine LIB-Datei soetwas wie einen
Zwischencode enhält. Aber man kann mit ihr eine schöne andere Sache machen!
Beispiel:
Du hast eine Bibliothek erstellt die nur Grafik-SUB's enthält und eine 2.
Bibliothek die nur Sound-Subs enthält. Du hast jetzt folgende Dateien:
grafik.QLB, grafik.LIB, sound.QLB, sound.LIB So, und jetzt möchtest Du ein
Programm schreiben das sowohl Grafik als auch Sound benutzt und müßtest
eigentlich 2 Bibliotheken laden. ABER: Das Problem ist das man immer nur 1
Bibliothek laden kann. Also müßte man irgendwie aus 2 Bibliotheken 1 machen. Und
dafür sind die LIB-Dateien da. Denn man kann aus mehreren LIB-Dateien eine neue
QLB-Datei machen.
*** EXE-Programm erstellen, das eine Bibliothek benutzt
--------------------------------------------------------------------------------
Auch zum Erstellen einer EXE-Datei wird die .LIB-Datei benötigt. Hierzu reicht
die QLB-QuickLibrary nicht aus: Um ein in Verbindung mit einer .QLB Quick-
Bibliothek lauffähiges Programm kompilieren zu können, muss zusätzlich eine
Bibliothek gleichen Namens mit der Endung .LIB vorhanden sein. Diese
Bibliotheken werden vom Linker in das Programm eingebunden.
*** Wie erstelle ich eine QLB-Datei aus einer oder mehreren LIB-Dateien?
--------------------------------------------------------------------------------
Bei QuickBASIC 4.4 musst Du diesen Befehl in der Befehlszeile eingeben:
LINK.EXE /QU erste.LIB + zweite.LIB + ... , namederneuenqlb.QLB, NUL, BQLB45
Wenn Du nur eine LIB-Datei hast, dann lässt Du "+zweite.LIB + ..." natürlich weg.
Bei QuickBASIC 7.1/PDS lautet der letzte Eintrag anders. Gib dort folgendes
ein:
LINK.EXE /QU erste.LIB + zweite.LIB + ... , namederneuenqlb.QLB, NUL, QBXQLB.LIB
Und schon hast Du eine Bibliothek die sich aus mehreren LIB's zusammensetzt.
Wenn Du statt "NUL" einen beliebigen Dateinamen eingibst, z.B. log.txt, so
erhältst Du eine Textdatei mit einem Protokoll über den Linkvorgang.
TIPP: wenn Du Speicher sparen möchtest kannst Du Dein e ganzen SUB's in einzelne
LIB's tun und ein Programm schreiben das je nach Bedarf die jeweiligen
LIB's/SUB's zu einer QLB-Datei zusammenfügt. Das nennt man dann ein
Baukastenprinzip!
Mehrere QLB-Bibliotheken kannst Du übrigens nicht direkt zu einer
zusammenfassen. Du benötigts dazu immer die zu Grunde liegenden LIB-Dateien, die
Du dann nach dem oben stehenden Schema zusammenfügen kannst.
*** Eine Bibliothek in einer anderen Programmiersprache erstellen
--------------------------------------------------------------------------------
Du kannst eine Bibliothek statt mit QB auch in einer anderen Programmiersprache
erstellen. Viele im Internet erhältliche QB-Bibliotheken sind z.B. in Assembler
oder in C geschrieben. Dabei muss man die QB-Konventionen bei der
Parameterübergabe einhalten, worauf ich aber jetzt nicht näher eingehen will.
*** Abschließende Worte.
--------------------------------------------------------------------------------
So ich hoffe das war ausführlich und verständlich genug. Wenn Du weitere Fragen
hast oder ich irgend etwas falsch beschrieben habe, dann sende mir bitte eine
Mail an webmaster@iconsoft.de.de .
--------------------------------------------------------------------------------
|
_________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2510 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 24.11.2004, 22:26 Titel: na ja |
|
|
Hilft nich wirklich, ich rufe das nähmlich nicht mehr mit DOS auf, sondern mit Windows Xp. und da mach ich das nich mit befehlszeile sondern mit Doppelklick. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.11.2004, 23:08 Titel: Huh, ein DOS-Verachter... |
|
|
Hallo.
Auch unter XP kannst du DOS nutzen. Gib bei Ausführen CMD oder COMMAND ein und schon hast du eine DOS-Box.
Wenn du QB automatisch mit einer bestimmten Lib starten willst, erstell eine Verknüpfung mit QB und ergänz dann unter Rechtsklick, Eigenschaften, Programm, Befehlszeile Folgendes:
/L MyLib
Das ganze sieht dann so aus:
C:\MEINPFAD\QBASIC\QB.EXE /L MEINELIB
Oder du kannst auch eine Batchdatei erstellen.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 26.11.2004, 23:38 Titel: Batch |
|
|
Bin da nich so bewandert. Was ist eine Batch-Datei??? |
|
Nach oben |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 27.11.2004, 11:10 Titel: |
|
|
Hi & guten Morgen
Wenn du zum Beispiel über Start > Ausführen "Command", bzw. "CMD" + Enter die Dos-Konsole hervorholst, kannst du dort ja deine DOS-Befehle eingeben.
Ebensogut, kannst du diese aber auch in eine ganznormale Text-Datei schreiben, die du dann in .BAT umbenennst - schon hast du eine Batch-Datei. Wenn du diese anklickst, werden die Befehle nacheinander ausgeführt.
In Batch kann man aber natürlich auch ein bischen "programmieren", mit IF-Abfragen, GOTO-Sprüngen und Eingabeaufforderungen usw, aber das ist jetzt mal nicht so wichtig.
Du erstellst jetzt also irgendeine leere Datei, zum Beispiel eine Text-Datei und gibst dieser die endung BAT statt TXT.
Dann klickst du rechts auf das Datei-Symbol und gehst auf "Bearbeiten".
Hier kannst du nun deine DOS-Befehle eingeben - und zwar so, wie du sie auch eingeben würdest, wenn du unter normalen DOS wärst.
Zum Beispiel: Code: | C:\MEINPFAD\QBASIC\QB.EXE /L MEINELIB |
Dann speichern und ausprobieren durch Anklicken.
Achja: Falls nach dem Beenden von QBasic dann das Fenster da bleibt, kann es helfen, in die zweite Zeile der Batch noch ein das du ja schon aus QB selbst kennst, reinzusetzen.
Grüßle,
Mecki _________________ » Yodl.de: So sucht man gestern.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
|
derdicke
Anmeldungsdatum: 27.11.2004 Beiträge: 8
|
Verfasst am: 27.11.2004, 13:12 Titel: Frage von mir! |
|
|
Wie ist das wenn ich mehr als eine Lib einbinden will, wie muss ich das machen? |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 27.11.2004, 13:32 Titel: Mehr als eine |
|
|
Das ist eine gute Frage. Wenn es in Batch Dateien If Abfragen gibt, gibt es dann eine Möglichkeit Input einzusetzten und so eine Entscheidung zwischen 2 Librarys zu machen? |
|
Nach oben |
|
|
derdicke
Anmeldungsdatum: 27.11.2004 Beiträge: 8
|
Verfasst am: 27.11.2004, 15:19 Titel: |
|
|
Soweit ich weiß gibt es if-anweisungen, aber ich will sie beide gleichzeitig nuten! |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 27.11.2004, 17:51 Titel: |
|
|
2 Libs laden geht nur wenn du sie mit LINK.exe (im Qbasic-ordner) zu einer kombinierst.
Batch mit if geht, aber das musste dann mit Errorhandler machen, Input gibts da ned. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 27.11.2004, 20:06 Titel: Choice |
|
|
Is egal, ich habe Windows XP.
Wie macht man das mit der Dateiendung? |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2510 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.11.2004, 21:10 Titel: Re: CHOICE |
|
|
Sebastian hat Folgendes geschrieben: | Aber CHOICE gibt es, wenn auch nicht mehr unter WXP. |
Dafür hat CMD.EXE viele Features aus der UNIX-Shellscript-Welt, die es alle bei COMMAND.COM unter Windows 95/98/ME-Welt nicht gibt, so dass einfache Arithmetik möglich ist. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 27.11.2004, 21:16 Titel: ??? |
|
|
Und wie kann man die Dateiendung ändern? Worauf klicken? |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2510 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.11.2004, 22:04 Titel: Re: ??? |
|
|
Progger_X hat Folgendes geschrieben: | Und wie kann man die Dateiendung ändern? |
Datei einfach umbenennen, z.B.
Code: | NAME "xyz.alt" AS "xyz.neu" |
in QB; in Batchdateien mit
Code: | ren xyz.alt xyz.neu |
_________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 27.11.2004, 22:35 Titel: Gut |
|
|
Soweit klappts. Und wie geht das jetzt mit der Auswahl???
Und wieso kann ich mir die Batchturtorials nicht downloaden(da kommt dann immer ein Fenster mit einem leeren Ordner) |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|