home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* BRDGEN.BAS *
- '* Datei-Generator erzeugt aus den eingelesenen Werten *
- '* Unterprogramme zum Lesen und Schreiben von *
- '* Random-Dateien *
- '* (c) 1989 Gerd Kraus & TOOLBOX *
- '* ------------------------------------------------------- *
-
- $INCLUDE "EINGABE.INC"
- '* SUB EINGABE(FELDLEN%, SPOS%, ZPOS%, VARTYP$, ANTWORT$)
-
- %Max = 10 ' max. 10 Variablen
- DIM Eingabe$(0 : %Max) ' Eingabe$(0) enthält den Namen der
- ' späteren Random-Datei
- DIM Laenge$ (1 : %Max)
-
- '* ------------------------------------------------------- *
- '* Hauptprogramm
- CALL Bild
- CALL Eingaben(DateiName$, IncludeName$)
- CALL Einlesen(DateiName$, Eingabe$(), Laenge%(), Vorh%)
- CALL GENERATOR (DateiName$, IncludeName$, Eingabe$(), _
- Laenge% (), Vorh%)
- END
-
- '* ------------------------------------------------------- *
- SUB Bild
-
- LOCAL Titel$, CO$, Spalte%
-
- Titel$ = "RANDOM-Datei-Code-Generator"
- CO$ = "(c) 1989 Gerd Kraus & TOOLBOX"
- Hilf$ = "Dieses Programm erzeugt ein Include-File " + _
- "für RANDOM-Dateien"
-
- CLS
- LOCATE 1,1 : COLOR 1,3 : PRINT SPACE$ (80);
- Spalte% = INT ((80 - LEN (Titel$))/2)
- LOCATE 1, Spalte% : PRINT Titel$
- LOCATE 1, 60 : PRINT CO$
-
- LOCATE 25,1 : COLOR 15,1 : PRINT SPACE$ (80);
- Spalte% = INT ((80 - LEN (Hilf$))/2)
- LOCATE 25, Spalte% : PRINT Hilf$;
-
- COLOR 14,0
- LOCATE 5, 5
- PRINT "Name der Datei mit den Variablen-Namen (*.Var) : "
- LOCATE 7, 5
- PRINT "Name des zu erzeugenden Include-Files (*.Inc) : "
-
- END SUB
-
- '* ---------------------------------------------------------
- SUB Eingaben (DatNam$, IncName$)
-
- CALL EINGABE(8, 60, 5, "t", DatNam$)
- IF DatNam$ = "" THEN STOP
- DatNam$ = DatNam$ + ".Var"
- CALL EINGABE(8, 60, 7, "t", IncNam$)
- IF IncName$ = "" THEN STOP
- IncName$ = IncName$ + ".INC"
- PRINT : PRINT
- END SUB
-
- '* ---------------------------------------------------------
- SUB Generator(DatNam$,IncName$,Eingabe$(1),Laenge%(1),Vorh%)
-
- LOCAL Trenn$, Linie$, Leer$, LogNr$, i%
-
- Trenn$ = CHR$(34) ' Anführungszeichen
- Linie$ = CHR$(39) + STRING$ (49, 45) ' Trennlinie zwischen
- ' den Prozeduren
- Leer$ = STRING$(3, 32) ' für's Einrücken
-
- '* 1. Ermittlung der Gesamtlänge des Feldes sowie der
- '* Länge der einzelnen Variablen.
- '* Das Ergebnis wird auf dem Bildschirm angezeigt
-
- LogNr$ = STR$ (Laenge% (0)) ' Dateinummer # ..
- Laenge% (0) = 0 ' Feldlänge
-
- FOR i% = 1 TO Vorh%
- SELECT CASE RIGHT$ (Eingabe$ (i%), 1)
- CASE "$" : PRINT "String",
- CASE "%" : PRINT "Integer", : Laenge% (i%) = 2
- CASE "&" : PRINT "Long-Integer", : Laenge% (i%) = 4
- CASE "!" : PRINT "Real", : Laenge% (i%) = 4
- CASE "#" : PRINT "Double", : Laenge% (i%) = 8
- CASE "" : PRINT "keine Eingabe", : Laenge% (i%) = 0
- CASE ELSE : PRINT "REAL", : Laenge% (i%) = 4
- END SELECT
- Laenge% (0) = Laenge% (0) + Laenge% (i%)
- PRINT Eingabe$ (i%), Laenge% (i%)
- NEXT i%
-
- PRINT : PRINT "Gesamtlänge : "; Laenge% (0)
-
- '* 2. Include-Datei mit einer sequentielle Datei erzeugen
- '* WRITE #1 liefert Anführungszeichen, deshalb PRINT #1 !
- OPEN IncName$ FOR OUTPUT AS #1
-
- '* jetzt werden die einzelnen Prozeduren erzeugt :
- '* SCHRITT 1 :
- '* immer nützlich : ein Header für das Include-File
- PRINT #1, "' Include-File für RANDOM-Dateien"
- PRINT #1, "' Version 1.03 vom 18.12.1988 "
- PRINT #1, ""
- PRINT #1, "' globale Variable Puffer$ () = Puffervariable"
- PRINT #1, Linie$
-
- '* SCHRITT 2 :
- '* die Puffervariable wird als globales,
- '* dynamisches Feld angelegt
- PRINT #1, "SUB PufferDimensionieren"
- PRINT #1, "' diese Prozedur darf nur beim Programmstart"
- PRINT #1, "' aufgerufen werden !
- PRINT #1, ""
- PRINT #1, "LOCAL Max%"
- PRINT #1, "SHARED Puffer$ ()"
- PRINT #1, ""
- PRINT #1, Leer$ + "Max% = " + STR$ (Vorh%)
- PRINT #1, Leer$ + "DIM Puffer$ (1 : Max%)"
- PRINT #1, ""
- PRINT #1, "END SUB ' PufferDimensionieren"
- PRINT #1, Linie$
-
- '* SCHRITT 3 :
- '* die Prozedur zum Öffnen der Random-Datei :
-
- '* a. Prozedurnamen und -variable
- PRINT #1, "SUB DateiOeffnen"
- PRINT #1, ""
- PRINT #1, "SHARED Puffer$ ()"
- PRINT #1, ""
-
- '* b. Feldbezeichner eintragen
- PRINT #1, Leer$ + "OPEN " + Trenn$ + Eingabe$ (0) + _
- Trenn$ + " FOR RANDOM AS #" + LogNr$ + _
- " LEN = " + STR$ (Laenge% (0))
-
- PRINT #1, Leer$ + "FIELD #" + LogNr$ + ",_"
-
- FOR i% = 1 TO Vorh% - 1
- PRINT #1, Leer$ + STR$ (Laenge% (i%)) + " AS Puffer$ (" _
- + STR$ (i%) + "),_"
- NEXT i%
- PRINT #1, Leer$ + STR$ (Laenge% (i%)) + _
- " AS Puffer$ (" + STR$ (i%) + ")"
- PRINT #1, ""
- PRINT #1, "END SUB ' DateiOeffnen"
- PRINT #1, Linie$
-
- '* SCHRITT 4 :
- '* die Prozedur zum Schreiben eines Datensatzes
- '* a. Prozedurnamen und -variable
- PRINT #1, "SUB DatenSchreiben (SatzNr%)"
- PRINT #1, ""
- PRINT #1, "SHARED_"
- PRINT #1, Leer$ + "Puffer$ (),_"
- FOR i% = 1 TO Vorh% - 1
- PRINT #1, Leer$ + Eingabe$ (i%) + ",_"
- NEXT i%
- PRINT #1, Leer$ + Eingabe$ (i%)
- PRINT #1, ""
-
- '* b. numerische Werte in (Datei-)Zeichenketten umwandeln
- '* und ...
- '* c. Daten mit LSET in den Puffer schreiben
- FOR i% = 1 TO Vorh%
- PRINT #1, Leer$ + "LSet Puffer$ (" + STR$ (i%) + ") = ";
-
- SELECT CASE RIGHT$ (Eingabe$ (i%), 1)
- CASE "$" : PRINT #1, "(";
- ' String : keine Umwandlung erforderlich !
- CASE "%" : PRINT #1, "MKI$ (";
- CASE "&" : PRINT #1, "MKL$ (";
- CASE "!" : PRINT #1, "MKS$ (";
- CASE "#" : PRINT #1, "MKD$ (";
- CASE ELSE : PRINT #1, "MKS$ (";
- END SELECT
- PRINT #1, Eingabe$ (i%) + ")"
- NEXT i%
- PRINT #1, ""
-
- '* d. und jetzt noch vom Puffer mit "PUT " auf Diskette
- PRINT #1, Leer$ + "PUT #" + LogNr$ + ", SatzNr%"
- PRINT #1, ""
- PRINT #1, "END SUB" ' DatenSchreiben
- PRINT #1, Linie$
-
- '* SCHRITT 5 :
- '* die Prozedur zum Lesen eines Datensatzes :
-
- '* a. Prozedurnamen und -variable
- PRINT #1, "SUB DatenLesen (SatzNr%)"
- PRINT #1, ""
- PRINT #1, "SHARED_"
- PRINT #1, Leer$ + "Puffer$ (),_"
- FOR i% = 1 TO Vorh% - 1
- PRINT #1, Leer$ + Eingabe$ (i%) + ",_"
- NEXT i%
- PRINT #1, Leer$ + Eingabe$ (i%)
- PRINT #1, ""
-
- '* b. Daten mit GET in den Puffer einlesen
- PRINT #1, Leer$ + "GET #" + LogNr$ + ", SatzNr%"
- PRINT #1, ""
-
- '* c. Puffervariable in Feldvariable umwandeln
- FOR i% = 1 TO Vorh%
- PRINT #1, Leer$ + Eingabe$ (i%) + " = ";
-
- SELECT CASE RIGHT$ (Eingabe$ (i%), 1)
- CASE "$" : PRINT #1, "(";
- ' String : keine Umwandlung erforderlich !
- CASE "%" : PRINT #1, "CVI (";
- CASE "&" : PRINT #1, "CVL (";
- CASE "!" : PRINT #1, "CVS (";
- CASE "#" : PRINT #1, "CVD (";
- CASE ELSE : PRINT #1, "CVS (";
- END SELECT
- PRINT #1, "Puffer$ (" + STR$ (i%) + "))"
- NEXT i%
- PRINT #1, "END SUB" ' DatenLesen
- PRINT #1, Linie$
-
- '* SCHRITT 6 :
- '* Datei schliessen
- PRINT #1, "SUB DateiSchliessen"
- PRINT #1, Leer$ + "CLOSE #" + LogNr$
- PRINT #1, "END SUB" ' DateiSchliessen
- PRINT #1, Linie$
-
- '* damit ist unser Include-File fertig
-
- CLOSE #1
- END SUB
- '* ------------------------------------------------------- *
- SUB Einlesen (DatNam$, Eingabe$ (1), Laenge% (1), Vorh% )
- '* die Variablennamen werden eingelesen
-
- LOCAL i%
-
- OPEN DatNam$ FOR INPUT AS #1
- INPUT #1, Eingabe$ (0), Laenge% (0)
-
- i% = 1
- WHILE NOT EOF (1)
- INPUT #1, Eingabe$ (i%), Laenge% (i%)
- INCR i%
- WEND
- CLOSE #1
- Vorh% = i% - 1
-
- END SUB
- '* ------------------------------------------------------- *
- '* Ende von BRDGEN.BAS *