Logo Foltyn Presentation
Table of Contents Previous Page Next Page
ActiveVBmember

Begleitende Diskussionen zur
Active VB Community

13. Juli 2016

Ein paar Grundsätze:

Es liegt in der Natur des Programmierens, dass bereits für wenig Funktionen alles recht kompliziert ist und viel zu Schreiben, obwohl die Sprachen schon sehr mächtig sind. Und hier sind von mir Programm-Strukturen entwickelt worden, die ein effizientes Programmieren ermöglichen im Umfang von Programmen mit etwa 1000 Zeilen, die für einen Benutzer eine Funktionseinheit bilden und mit Klassenprogrammierung für eine Einzelperson als Programmierer. Mein Niveau ist der normale Hausgebrauch, also im Wesentlichen Datei-Auswahl und alle Festplatten-Operationen. Keine Internet-Übertragungen, keine Fernzugriffe auf Computer, keine USB-Controls usw.

Alles Programmieren beginnt mit dem gleichzeitigen Anlegen eines Prozeduren-Baukastens, der für alle Programme verwendet wird. Die erste Prozedur, ohne die nichts geht, ist das Lesen und Schreiben von Text auf der Festplatte. Da jeder Text in Zeilen ist, nimmt man dazu ein Array oder im VB ein Listenobjekt. Die meisten Programme befassen sich damit, Daten oder Texte herein zu holen, (zeilenweise) zu bearbeiten und wieder abzuspeichern. So ist das dynamische Array das Um und Auf im ganzen Programmieren.

Im VB 2015 hat das Array anscheinend etwas eingeschränkte Funktionen, die man sich sonst vielleicht selber schreiben müßte. So nimmt man ein Listenobjekt, damit muss man sich vertraut machen und wie man es gegfls. konvertiert in ein Array usw.

Programmieren mit VB 2015:

Im VB beginnt alles mit der Form, mit dem Konsolkompiler kenne ich mich nicht aus. Aber man kann die Form auch unsichtbar machen, wenn man ein Programm laufen lassen will, ohne etwas auf den Bildschirm zu bekommen. Es ist ja eine prinzipielle Eigenschaft der Form, dass nach dem Programmstart in der Sub Form1_Load() jeder Code erst abgearbeitet wird, bevor die Oberfläche auf dem Bildschirm erscheint.

Wenn ein Programm ein paar Funktionen hat, damit es etwas tut und bedienbar ist, hat man bald 30 Subroutinen, die man beim VB zuklappen kann. Das macht das Programm übersichtlich.

Man testet ständig die Funktionen und geht in kleinen Schritten vorwärts. Man braucht während des Programmierens ständig Zwischenergebnisse. Deshalb beginnt man das Programm mit dem Anlegen von einer Textbox, die man später wieder entfernen kann und macht sich damit vertraut, wie man die mit Text beschickt.

Man kann von jeder Klasse aus in die TextBox schreiben, man muss nur Form1. davor schreiben. Aber es überschreibt den vorhergehenden Text und man muss daher den Text in einem globalen Array sammeln. Die Textbox akzeptiert aber nur Strings mit vbCrLf und man muss daher vorher das Array in einen String umwandeln.

Das Programm mit ein paar Subroutinen gibt man in eine eigene Klasse, wo nicht zu viele Subroutinen drin sein sollen.

Alle global zugreifbaren Variablen und Prozeduren kommen in einen Modul. Wenn man nur einen Modul hat, braucht man beim Aufruf keinen Namen davor schreiben und alles benimmt sich so, als wäre es in jeder Klasse vorhanden. Man kann in den Modul auch Klassen hineinschreiben, auch nur um ein Objekt mit ein paar Eigenschaften zu erzeugen. Sie werden im Modul instantiiert und können ohne weiteren Prefix global verwendet werden.

Konstanten alle nach oben, damit sie bei Änderungen leicht auffindbar sind.

Die Main sollte nur eine Liste mit Aufrufen von Prozeduren beinhalten und Break-Error-Abbrüche, weil es sind viele Funktionen abzuarbeiten, von denen Klarheit bestehen muss, was zu tun ist und in welcher Reihenfolge. Und alle Unterfunktionen auslagern. Alle Prozeduren sollten möglichst nur Listen von weiteren Funktionen beinhalten. Und alle komplizierteren Algorithmen auslagern. Alles, um der Übersichtlichkeit zu dienen.

Ich habe für viele Funktionen eine verkürzte Schreibweise eingeführt, um die Algorithmen übersichtlicher zu machen. Das erzeugt viele Unterfunktionen, die man aber als Pakete auslagern kann und die häufig aufgerufen werden. Und man sortiert sie.

Datei- und Verzeichnis-Auswahlfenster sind in einer eigenen Klasse.

Es wird eine globale Liste angelegt namens "BreakErrMsg", die von allen Stellen im Programm mit Fehlermeldungen beschickt werden kann. Bei der nächsten Gelegenheit wird bei BreakErr aus jeder Prozedur heraus gesprungen. Am Ende wird es angezeigt, wenn vorhanden, ansonsten werden Ergebnisse angezeigt.

1. Thema: Welle

Ein Code liefert eine optische Darstellung einer sich kugelförmig ausbreitenden Welle in der Ebene in bewegten Bildern

2. Thema: Aufruf von Funktionen eines Backup-Programms per Commandozeile

Sowohl bei Langmeier-Backup, wie auch bei AllSync-Backup kann man mit Tasks Scripts oder exe-Dateien aufrufen (vor dem Task oder danach). Ein Task ist eine Liste von Quell- und Zielverzeichnissen, wie Daten bewegt werden, mit vielen zusätzlichen Einstellungen. Aber man kann dabei mit den Scripts oder exe-Dateien keine Parameter übergeben, diese Dateien laufen damit in einer anderen Umgebung, die vom Backup-Programm kontolliert wird. Der Script-Compiler ist in das Backup-Programm verlegt und das Script kann das eigene Verzeichnis nicht mehr feststellen. Und so ist es manchmal zweckmäßiger, per Programm ein Script aufzurufen und dann einen Task per Kommandozeile und das halt dann für alle Tasks. So braucht man ein Programm, wo man leicht beides auflisten kann und das Programm erkennt selbstständig, was es ist. Bei mir hat das Programm auch erkannt, ob eine Listeneintragung schon abgearbeitet war und hat es nicht noch einmal gemacht und hat die Reihenfolge korrigiert usw.

Und diesen Code möchte ich hier baldmöglichst präsentieren. Er ist allerdings in vbScript geschrieben. Aber man kann auch mit VB Ergänzungen zu Daten-Backups schreiben.

In einem speziellen Fall habe ich jedes mal auf eine andere Festplatte gesichert und damit ich nicht für jede Festplatte alle Tasks nocheinmal haben muss und bei jeder Änderung peinlichst genau alle ändern, habe ich mit einem vbScript die Festplatte umbenannt und nachher wieder zurück benannt. Aber u.a. dazu muss das Script wissen, welche Festplatte vorher dran war und dazu muss man Kommandozeile programmieren. Natürlich braucht das Programmieren viel mehr Zeit als wenn man alles händisch macht, aber ich habe schon Jahre nichts mehr machen brauchen.

3. Thema:

Programmierung von Vektor-Rechnung für Planetenbahn-Berechnungen