Einleitung 0/10
Information


Dies ist eine erste unvollständige Vorabversion. Sie wird um einige weitere Themen erweitert und die Vorhandenen werden überarbeitet werden. Ich veröffentliche diese Version nur, um zu sehen, ob überhaupt Interesse besteht und sich die Fortführung lohnt.
Sie können gerne Verbesserungsvorschläge beisteuern, auch wenn ich nicht garantiere, das ich Sie alle beachten werde. Sie können auch vorschläge für Kapitel einsenden. Emails diesbezüglich bitte an bekkah[at]web.de. Der Betreff sollte mit "[MQB]" oder "[Modernes QB]" beginnen (ohne Anführungszeichen. Ansonsten ist die Wahrscheinlichkeit gering, das ich die Mail beachte.

Intention:

QuickBasic ist eine simple Sprache aus den 80ern, in der erstaunlicherweise immernoch programmiert wird. Hauptsächlich von Leuten, die den Einstieg in die Programmierung finden wollen oder von Leuten, die schon Früher in QB programmiert haben und überhaupt nicht vorhaben sich mit einer moderenen wesentlich mächigeren Sprache zu beschäftigen, weil ihnen ein wenig rumspielen genügt.
In disem Text werden Sie all das lernen, was Sie in keinem Anfängerbuch finden. Sie werden sehen, das QB mehr bietet, als man glauben mag.
Damit Sie etwas von der Lektüre dieses Textes haben sllten Sie mindestens eine 4er version von QB einsetztn.


Verwendung:

Wie dieser Text verwndet wird sollte größtenteils selbsterklärend sein. Das einzige, was nicht offensichtlich ist, ist das Sie zum Inhaltsverzeichnis gelangen, indem Sie auf die Überschrift "Modernes QuickBasic" klicken.
Anmerkung: Ich verwende in diesem Text den Begriff Prozedur sowohl für 'SUB's, ls auch für 'FUNCTION's, da es oftmals nicht wichtig ist, was von beidem es denn etzt genau ist.


Für wen ist dieser Text?

Dieser Text ist nicht an für Leute gerichtet, die noch keine Ahnung von QuickBasic haben (es handelt sich also nicht um ein Einsteigertutorium), sondern an die jenigen, die sich schon länger damit beschäftigen. Ich setzte voraus, dass Sie sich mit dem Prinziep des prozeduralen Programmierens auskennen, also auf QB bezogen Functions uns Subs einsetzen. Im laufe des Tutoriums wird das aber nochmals vertieft (beispielsweise im Kapitel über Scriptsprachen). Des weieren wird vorausgesetzt, das Sie die Sprache selbst kennen. Es wird also nicht nochmals erklärt, wie man Dateien öffnet oder ähnliches. Falls Sie einzelne Befehle nicht kennen, können Sie diese in der Hilfe nachschlagen.


Zum Text

Es gibt viele Bibliotheken, die versuchen QuickBasic moderner zu machen, in dem sie Unterstützung für Maus, hohe Auflösung und Zugriff auf den erweiterten Speicher bieten. Die beiden bekanntesten sind Future.Lib und UGL. UGL bietet zwar mehr, hat sich aber nicht wirkich durchgesetzt, da es zum Teil ein wenig komplizierter ist und auch auf Grund dessen, dass es neuer ist, sich noch nicht so verbreitet hat. In einigen Teilen benötige ich den erweiterten Speicher und beziehe mich auf die Future.Lib. Ich versuche es aber so zu gestalten, das es sich auch mit jeder anderen Bibliothek, die Unterstützung für EMS oder vorzugsweise XMS bietet, umsetzen lässt.
Jedes Kapitel hat eine Schwierigkeitsbewertung. Dieser wird repräsentiert durch x/10, wobei x=0 das leichteste und x=10 das schwerste ist. Des weiteren wird eine Kategorie angegeben: 'Information' bedeutet, das Sie einfach üer einen Tatbestand aufgeklärt werden. 'Hintergrundwissen' bedeutet, dass ihnen erklärt wird, wie etwas Funktioniert, damit Sie es später auch wirklich anwenden können. 'Design und Technik' sind die (meiner Meinung nach) interessantesten Kpitel: Hier werden Programmiertechniken gezeigt und wie man Dinge am geschicktesten umsetzt. Einige Kapitel gehören mehreren Kategorien an.
Zur Schwierigkeitsbewertung: b ein Text interessant ist oder nicht hängt nicht von der Schwierigkeit ab. Auch einfache Texte können interessantes Zeigen. Als Fortgeschrittener sollten nach möglichst alle Kapitel lesen. Auch QB-Profies sollten, sich dieses Tutorium durchlesen. Damit ihnen nicht langweilig wird können Sie Kapitel der Kategorie 'Hintergrundwissen' jedoch einfach überspringen. Selbst für QB-Gurus sind einige Kapitel sicherlich noch interessant, da die Bibliothek auch für sie interessant sein könnte und ich auf die modernsten Programmiertechniken eingehe, die in die Basic-Szene überhaupt nicht mehr vordrinen, da QB eine recht unmoderne Sprache ist.


MQB

Dieses Tutorium beschreibt zum Teil den Aufbau der kleinen Bibliothek MQB, die zu diesem Text gehört und als Quelltext vorliegt. Sie bietet alles, was hier besprochen wird in ausgereifter Form, so dass Sie sie einfach in ihrem Projekt verwenden können. Die Bibliothek ist komplett in Englisch geschrieben, da auch nicht Deutschsprachige diese Bibliothek verwenden können sollen.
Alle Teile der Bibliothek beginnen mit 'mqb'. Verwenden Sie, falls Sie die Bibliothek benutzen, nie Namen, die mit dieser Zeichenfolge beginnen. Wärend es bei Funktionen nicht zu Problemen kommen kann, höchstens zu Verwirrungen, kann das Verwenden einer solchen Variable echte Probleme hervorufen. Die Bibliothek verwendet diese Variablen intern. Sollten Sie diese ändern, funktionieren Funktionen der Bibliothek möglicherweise nicht mehr oder Variablen ihres Programmes werden unerwarteter Weise gändert.
Funktionen, die mit 'mqbIntern' sind nicht gedacht von außen aufgerufen zu werden. Damit könnten Sie andere Funktionen aus dem Tritt bringen. Alle anderen Funktionen sollte der Beschreibung entsprechend verwendet werden.
Sie verwenden die Bibliothek auf ihr eigenes Risiko. Ich bin nicht verantwortlich für irgendwelche Schäden, die bei Ihnen durch diese Bibliothek verursacht werden. Falls Sie irgendwelche Probleme an der Bibliothek selbst feststellen sollten oder irgendwelche Vorschläge zur Verbesserung haben, benachrichtigen Sie mich. Ich werden dann versuchen das Problem zu beseitigen bzw. den Vorschlag umzusetzen, falls er mir gefällt.


Fortgeschrittenenfehler

Damit Sie in diesem Kapitel überhaupt etwas lernen, kläre ich Sie jett über tyische Fortgeschrittenenfehler auf.
Fortgeschrittene definieren erstens viel zu viele 'SHARED' variablen und dann verwenden Sie häufig 'COMMON' statt 'DIM', aus irgend einem Grund, den ich bis heute nicht kenne.
Ein Fehler stellt die viel zu grobe Teilung dar. Statt pro Aufgabe eine Prozedur zu schreiben, wird für einen großen Abschnitt im Programm eine Prozedur geschrieben, wodurch alles unnötig verkompliziert wird. So entstehen riesige Prozeduren, die schwer wartbar, unfelxibel und aufwendig zu debuggen sind. Dabei könnte das Leben so einfach sein.
Damit Sie nicht einschalfen dürfen Sie selbst mal ein wenig denen: Was stört Sie an flgendem Code? Es handelt sich dabei um eine Funktion, die Werte zu Degug-Zwecken in eine Datei protokoliert. (Der Dateiname ist absichtlich festgelegt.)

SUB Protokoliere (daten AS STRING)
   OPEN "debug.txt" FOR OUTPUT AS #1
   PRINT #1, daten
   CLOSE
END SUB

Und? Im grunde sind die Fehler offensichtlich: Was passiert, wenn bereits eine Datei mit dem Handle '1' offen ist? Das Programm stürtz ab; und das durch eine Funktion, die zum Debugen gedacht ist. Natürlich sollte man sich erstmal einen freien Handle mittels 'FREEFILE' suchen.
Der zweite Fehler liegt in der letzten Zeile der Sub. Alle dateien werden geschlossen. Das ist wohl kaum gewollt. Schließen Sie immer nur die Dateien, die auch geschlossen werden sollen. Sonst verursacht eine Prozedur, die im einen Programm tadellos funktionierte, in einem anderen plötzlich einen Absturz und man weiß nicht warum.

SUB Protokoliere (daten AS STRING)
   DIM datei AS INTEGER
   datei = FREEFILE

   OPEN "debug.txt" FOR OUTPUT AS datei
   PRINT #datei, daten
   CLOSE datei
END SUB

Nun zu Schleifen: Viele QB-Prgrammiereer verwenden für alles und jedes fußgesteuerte Schleifen, Obwohl kopfgesteuerte Angesagt wwären. Die meisten Aufgaben fordern kpfgesteuerte Schleifen. einige testen sogar vorher die Bedingung und wenn diese zutrifft starten Sie die Schleife. Eine kopfgesteuerte Schleife hätte es auch getan. Einige ignorieren einfach die Möglichkeit, das die Bedingung bereits vorher bestehen könnte und wenn Sie das Programm vertielen wundern Sie sich, das bei anderen Fehler auftreten.


Recht

Sie können diesen Text und / oder die zugehörige Bibliothek nach Belieben in unveränderten Form an Freunde oder Bekannte weitergeben. Vor anderen Verwendungszwecken, wie dem öffentlichen Verteilen druch CDs, Ihre Homepage oder vergleichbarem, fragen Sie bitte den Autor.


Index
nächstes