home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* FILETEIL.BAS *
- '* Utility zum Aufteilen und Zusammenfügen großer Dateien *
- '* (c) 1989 W.Steininger & TOOLBOX *
- '* ------------------------------------------------------- *
- ON ERROR GOTO fehler
- ON KEY(10) GOSUB ende
-
- DO
- CLS
- CLOSE
- KEY(10) ON
- LOCATE 3,25
- PRINT "********** Fileteiler *********" : PRINT
- LOCATE 25,1 : PRINT "F10-Programmende"; : LOCATE 5,1
-
- DO
- PRINT "File aufteilen (A) oder zusammenfügen (Z) ?";
- INPUT art$ : art$ = UCASE$(art$)
- LOOP UNTIL (art$ = "A") OR (art$ = "Z")
-
- IF art$ = "Z" THEN
- CALL zufuegen
- ELSE
- CALL teilen
- END IF
- LOOP UNTIL 1 = 1 '* Endlosschleife, Abbruch über ON..KEY
-
- SUB zufuegen
- PRINT
- PRINT "Pfad\Filename der zusammengesetzten Datei ? ";
- INPUT filename$
- PRINT "Pfad\Filename der geteilten Dateien ? ";
- INPUT outfile$
- DO
- PRINT "Anzahl der Dateien (0..99) ? ";
- INPUT fileanz%
- LOOP UNTIL (fileanz% > 0) AND (fileanz% < 100)
-
- OPEN filename$ FOR BINARY AS #1
- filegroesse% = 0
-
- KEY(10) OFF '* Abbruch nicht zulassen
- FOR i% = 0 TO fileanz% - 1
- a$ = STR$(i%)
- a$ = RIGHT$(a$, LEN(a$) - 1)
- outfile$ = LEFT$(outfile$, LEN(outfile$) - LEN(a$)) + a$
-
- filepruef: '* Rückkehr Fehlerbehandlung
- OPEN outfile$ FOR INPUT AS #2
- CLOSE 2
- OPEN outfile$ FOR BINARY AS #2
- PRINT outfile$
- SEEK 1, filegroesse
- DO
- GET$ #2, 10000, temp$
- PUT$ #1, temp$
- LOOP UNTIL EOF(2)
- filegroesse = filegroesse + LOF(2)
- CLOSE 2
- NEXT i%
- PRINT "File fertig rekonstruiert"
- DELAY 1
- END SUB
-
- SUB teilen
- PRINT
- PRINT "Pfad\Filename der aufzuteilenden Datei ? ";
- INPUT filename$
- PRINT "Pfad\Filename der geteilten Dateien ? ";
- INPUT outfile$
- ok = 0
- DO
- DO
- PRINT "Filegröße (größer 10000) ? "
- INPUT filegroesse
- LOOP UNTIL filegroesse > 9999
- filegroesse = INT(filegroesse/10000) * 10000
- OPEN filename$ FOR BINARY AS #1
- filelaenge = LOF(1)
- fileanz = INT(filelaenge/filegroesse)
- IF filelaenge < filegroesse THEN
- PRINT "Keine Aufteilung nötig !"
- ok = 0 '* FALSCH
- ELSE
- ok = -1 '* WAHR
- END IF
- IF fileanz > 99 THEN
- PRINT "Zu viele Teile nötig !!"
- ok = 0
- ELSE
- ok = -1
- END IF
- LOOP UNTIL ok
- KEY(10) OFF
- FOR i% = 0 TO fileanz
-
- teilweiter: '* Rückkehr aus Fehlerbehandlung
- a$ = STR$(i%)
- a$ = RIGHT$(a$, LEN(a$) - 1)
- outfile$ = LEFT$(outfile$, LEN(outfile$) - len(a$)) + a$
- OPEN outfile$ FOR BINARY AS #2
- PRINT outfile$
- SEEK 1, i% * filegroesse
- IF i% = fileanz THEN
- DO
- GET$ #1, 10000, temp$
- PUT$ #2, temp$
- LOOP UNTIL EOF(1)
- ELSE
- FOR j% = 1 TO filegroesse/10000
- GET$ #1, 10000, temp$
- PUT$ #2, temp$
- NEXT j%
- END IF
- CLOSE 2
- NEXT i%
- PRINT "Aufteilung beendet. Anzahl der Files: "; fileanz+1
- DELAY 1
- END SUB
-
- fehler: '* eigene Fehlerbehandlung
- SELECT CASE err
- CASE 61
- IF art$ = "a" THEN
- CLOSE 2
- KILL outfile$
- PRINT "Diskette voll. ";
- INPUT "Neue Diskette einlegen <RETURN>", a$
- RESUME teilweiter
- END IF
- case 53
- IF art$ = "z" THEN
- CLOSE 2
- PRINT "Diskette mit File "; outfile$;
- INPUT " einlegen und <RETURN>"; ip$
- RESUME filepruef
- END IF
- END SELECT
- PRINT "Fehler "; err
-
- ende:
- CLOSE : END
-
- '* ------------------------------------------------------- *
- '* Ende von FILETEIL.BAS *