home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / envedit / envedit.bas next >
Encoding:
BASIC Source File  |  1993-03-10  |  3.4 KB  |  161 lines

  1. '* ******************************************************* *
  2. '*                        ENVEDIT.BAS                      *
  3. '*       Environment-Editor für TurboBasic/PowerBasic      *
  4. '*       benötigt DOS ab Vers. 3.3                         *
  5. '*                                                         *
  6. '*       Syntax: EnvEdit [editor]                          *
  7. '*                                                         *
  8. '*      (c) 1992 Edwin Schwartz & DMV                      *
  9. '* ******************************************************* *
  10.  
  11. DEF FNich$
  12. LOCAL Ich$
  13.  
  14. REG 1,&H6200
  15. CALL INTERRUPT &H21
  16. DEF SEG=REG(2)
  17. DEF SEG=PEEK(&H2D)*256+PEEK(&H2C)
  18. I=0
  19. DO
  20.  I=I+1
  21. LOOP UNTIL (PEEK(I)=0) AND (PEEK(I-1)=0)
  22. I=I+3
  23. Ich$=""
  24. DO
  25.  Ich$=Ich$+CHR$(PEEK(I))
  26.  I=I+1
  27. LOOP UNTIL PEEK(I)=0
  28. FNich$=Ich$
  29. END DEF
  30.  
  31.  
  32. ' SubRoutine SETUP
  33. ' verändert den eigenen .EXE File,
  34. ' um Pfad und Name des gewählten
  35. ' Editors einzutragen
  36. '---------------------------------
  37. SUB SetUp (Edi$)
  38. LOCAL Inx$,X,Y,Z,I,Ich$
  39. SHARED EDITOR$
  40.  
  41. OPEN FNich$ FOR BINARY AS #1
  42. Y=0
  43. DO
  44.  GET$ 1,32000,Inx$
  45.  Y=Y+1
  46.  X=INSTR(Inx$,LEFT$(EDITOR$,7))
  47. LOOP UNTIL (X<>0) or EOF(1)
  48.  
  49. IF X=0 THEN
  50.  PRINT "Fehler in Datei ";Ich$
  51.  PRINT "Bitte neu installieren."
  52.  CLOSE 1
  53.  SYSTEM
  54. END IF
  55.  
  56. Y=(Y-1)*32000+X-1
  57. SEEK #1,Y
  58. FOR Z=8 TO LEN(EDITOR$)
  59.  MID$(EDITOR$,Z)=" "
  60. NEXT Z
  61. MID$(EDITOR$,1)=LEFT$(EDITOR$,7)+Edi$
  62. PUT$ #1,EDITOR$
  63. CLOSE 1
  64. END SUB
  65.  
  66.  
  67. ' SubRoutine GetEnv
  68. ' liest das Environment und speichert
  69. ' es in der Datei ENVIRON.DAT
  70. '------------------------------------
  71. SUB GetEnv (EnvFile$)
  72. LOCAL EnvSeg,EnvLen,I,EnvAlt$
  73.  
  74. REG 1,&H6200
  75. CALL INTERRUPT &H21
  76. DEF SEG=REG(2)
  77. DEF SEG=PEEK(&H17)*256+PEEK(&H16)
  78. EnvSeg=PEEK(&H2D)*256+PEEK(&H2C)
  79. DEF SEG=EnvSeg-1
  80. EnvLen=(PEEK(4)*256+PEEK(3))*16
  81. DEF SEG=EnvSeg
  82. EnvAlt$=""
  83. IF PEEK(0)<>0 THEN
  84.  I=0
  85.  DO
  86.   IF PEEK(I)=0 THEN
  87.    EnvAlt$=EnvAlt$+CHR$(13)+CHR$(10)
  88.   ELSE
  89.    EnvAlt$=EnvAlt$+CHR$(PEEK(I))
  90.   END IF
  91.   I=I+1
  92.  LOOP UNTIL (PEEK(I)=0) AND (PEEK(I-1)=0)
  93. END IF
  94. EnvAlt$=EnvAlt$+CHR$(0)
  95.  
  96. OPEN EnvFile$ FOR OUTPUT AS 1
  97. I=1
  98. DO
  99.  PRINT #1, MID$(EnvAlt$,I,1);
  100.  I=I+1
  101. LOOP UNTIL MID$(EnvAlt$,I,1)=chr$(0)
  102. CLOSE 1
  103. END SUB
  104.  
  105. ' SubRoutine SetEnv
  106. ' liest die Datei ENVIRON.DAT und
  107. ' schreibt den Inhalt ins Environment
  108. '------------------------------------
  109. SUB SetEnv (EnvFile$)
  110. LOCAL EnvSeg,EnvLen,I,EnvNeu$,L$
  111.  
  112. EnvNeu$=""
  113. OPEN EnvFile$ FOR INPUT AS 1
  114. DO
  115.  Line Input #1, L$
  116.  EnvNeu$=EnvNeu$+L$+CHR$(0)
  117. LOOP UNTIL EOF(1)
  118. EnvNeu$=EnvNeu$+CHR$(0)
  119. CLOSE 1
  120.  
  121. REG 1,&H6200
  122. CALL INTERRUPT &H21
  123. DEF SEG=REG(2)
  124. DEF SEG=PEEK(&H17)*256+PEEK(&H16)
  125. EnvSeg=PEEK(&H2D)*256+PEEK(&H2C)
  126. DEF SEG=EnvSeg-1
  127. EnvLen=(PEEK(4)*256+PEEK(3))*16
  128. DEF SEG=EnvSeg
  129.  
  130. IF LEN(EnvNeu$) > EnvLen THEN
  131.  PRINT "Environment Overflow."
  132.  SYSTEM
  133. END IF
  134.  
  135. FOR I=1 TO LEN(EnvNeu$)
  136.  POKE I-1,asc(MID$(EnvNeu$,I,1))
  137. NEXT I
  138. END SUB
  139.  
  140. ' Hauptprogramm
  141. '---------------
  142. EDITOR$="EDITOR=Bitte rufen Sie das Programm einmal mit dem Parameter /S auf !"
  143.  
  144. IF (COMMAND$ = "/S") or (COMMAND$ = "/s") THEN
  145.  PRINT "Bitte geben Sie den vollständigen Pfad Ihres Editors an"
  146.  PRINT "(z.B. C:\UTIL\EDIT.COM) : ";
  147.  INPUT, Edi$
  148.  CALL SETUP (Edi$)
  149.  SYSTEM
  150. END IF
  151.  
  152. CALL GETENV ("ENVIRON.DAT")
  153. PRINT RIGHT$ (EDITOR$,LEN(EDITOR$)-7)
  154. EDITOR$=MID$(EDITOR$,8,LEN(EDITOR$)-7)
  155. SHELL EDITOR$+" ENVIRON.DAT"
  156. CALL SETENV ("ENVIRON.DAT")
  157. KILL "ENVIRON.DAT"
  158. '* ******************************************************* *
  159. '*                 Ende von ENVEDIT.BAS                    *
  160.  
  161.