home *** CD-ROM | disk | FTP | other *** search
- '* ******************************************************* *
- '* ENVEDIT.BAS *
- '* Environment-Editor für TurboBasic/PowerBasic *
- '* benötigt DOS ab Vers. 3.3 *
- '* *
- '* Syntax: EnvEdit [editor] *
- '* *
- '* (c) 1992 Edwin Schwartz & DMV *
- '* ******************************************************* *
-
- DEF FNich$
- LOCAL Ich$
-
- REG 1,&H6200
- CALL INTERRUPT &H21
- DEF SEG=REG(2)
- DEF SEG=PEEK(&H2D)*256+PEEK(&H2C)
- I=0
- DO
- I=I+1
- LOOP UNTIL (PEEK(I)=0) AND (PEEK(I-1)=0)
- I=I+3
- Ich$=""
- DO
- Ich$=Ich$+CHR$(PEEK(I))
- I=I+1
- LOOP UNTIL PEEK(I)=0
- FNich$=Ich$
- END DEF
-
-
- ' SubRoutine SETUP
- ' verändert den eigenen .EXE File,
- ' um Pfad und Name des gewählten
- ' Editors einzutragen
- '---------------------------------
- SUB SetUp (Edi$)
- LOCAL Inx$,X,Y,Z,I,Ich$
- SHARED EDITOR$
-
- OPEN FNich$ FOR BINARY AS #1
- Y=0
- DO
- GET$ 1,32000,Inx$
- Y=Y+1
- X=INSTR(Inx$,LEFT$(EDITOR$,7))
- LOOP UNTIL (X<>0) or EOF(1)
-
- IF X=0 THEN
- PRINT "Fehler in Datei ";Ich$
- PRINT "Bitte neu installieren."
- CLOSE 1
- SYSTEM
- END IF
-
- Y=(Y-1)*32000+X-1
- SEEK #1,Y
- FOR Z=8 TO LEN(EDITOR$)
- MID$(EDITOR$,Z)=" "
- NEXT Z
- MID$(EDITOR$,1)=LEFT$(EDITOR$,7)+Edi$
- PUT$ #1,EDITOR$
- CLOSE 1
- END SUB
-
-
- ' SubRoutine GetEnv
- ' liest das Environment und speichert
- ' es in der Datei ENVIRON.DAT
- '------------------------------------
- SUB GetEnv (EnvFile$)
- LOCAL EnvSeg,EnvLen,I,EnvAlt$
-
- REG 1,&H6200
- CALL INTERRUPT &H21
- DEF SEG=REG(2)
- DEF SEG=PEEK(&H17)*256+PEEK(&H16)
- EnvSeg=PEEK(&H2D)*256+PEEK(&H2C)
- DEF SEG=EnvSeg-1
- EnvLen=(PEEK(4)*256+PEEK(3))*16
- DEF SEG=EnvSeg
- EnvAlt$=""
- IF PEEK(0)<>0 THEN
- I=0
- DO
- IF PEEK(I)=0 THEN
- EnvAlt$=EnvAlt$+CHR$(13)+CHR$(10)
- ELSE
- EnvAlt$=EnvAlt$+CHR$(PEEK(I))
- END IF
- I=I+1
- LOOP UNTIL (PEEK(I)=0) AND (PEEK(I-1)=0)
- END IF
- EnvAlt$=EnvAlt$+CHR$(0)
-
- OPEN EnvFile$ FOR OUTPUT AS 1
- I=1
- DO
- PRINT #1, MID$(EnvAlt$,I,1);
- I=I+1
- LOOP UNTIL MID$(EnvAlt$,I,1)=chr$(0)
- CLOSE 1
- END SUB
-
- ' SubRoutine SetEnv
- ' liest die Datei ENVIRON.DAT und
- ' schreibt den Inhalt ins Environment
- '------------------------------------
- SUB SetEnv (EnvFile$)
- LOCAL EnvSeg,EnvLen,I,EnvNeu$,L$
-
- EnvNeu$=""
- OPEN EnvFile$ FOR INPUT AS 1
- DO
- Line Input #1, L$
- EnvNeu$=EnvNeu$+L$+CHR$(0)
- LOOP UNTIL EOF(1)
- EnvNeu$=EnvNeu$+CHR$(0)
- CLOSE 1
-
- REG 1,&H6200
- CALL INTERRUPT &H21
- DEF SEG=REG(2)
- DEF SEG=PEEK(&H17)*256+PEEK(&H16)
- EnvSeg=PEEK(&H2D)*256+PEEK(&H2C)
- DEF SEG=EnvSeg-1
- EnvLen=(PEEK(4)*256+PEEK(3))*16
- DEF SEG=EnvSeg
-
- IF LEN(EnvNeu$) > EnvLen THEN
- PRINT "Environment Overflow."
- SYSTEM
- END IF
-
- FOR I=1 TO LEN(EnvNeu$)
- POKE I-1,asc(MID$(EnvNeu$,I,1))
- NEXT I
- END SUB
-
- ' Hauptprogramm
- '---------------
- EDITOR$="EDITOR=Bitte rufen Sie das Programm einmal mit dem Parameter /S auf !"
-
- IF (COMMAND$ = "/S") or (COMMAND$ = "/s") THEN
- PRINT "Bitte geben Sie den vollständigen Pfad Ihres Editors an"
- PRINT "(z.B. C:\UTIL\EDIT.COM) : ";
- INPUT, Edi$
- CALL SETUP (Edi$)
- SYSTEM
- END IF
-
- CALL GETENV ("ENVIRON.DAT")
- PRINT RIGHT$ (EDITOR$,LEN(EDITOR$)-7)
- EDITOR$=MID$(EDITOR$,8,LEN(EDITOR$)-7)
- SHELL EDITOR$+" ENVIRON.DAT"
- CALL SETENV ("ENVIRON.DAT")
- KILL "ENVIRON.DAT"
- '* ******************************************************* *
- '* Ende von ENVEDIT.BAS *
-
-