Lars Gjörling
<6825>
· Text 418 · w8 · kommentar
1991-07-16 23:30
Ärende: "COMMON-KILL"
Du kan ju ta fasta på Bosses påpekande att COMMON-variablerna dödas
när man laddar in ett program, som saknar COMMON.
Du kan ju chaina till ett mellanprogram, som i sin tur chainar vi-
dare till det program, som egentligen är målet. Mellanprogrammet
måste då kunna läsa en medsänd parameter, vilket faktiskt går:
Skriv följande program och lagra det under namnet CommKill.bac:
110 ! CommKill.Bac - mellanprogram för att döda COMMON-variabler.
120 integer : extend
130 dim S¤ = 0
140 P = CALL(81) ! Sök adressen till kommandosträngen
150 POKE Varoot(S¤), 160, 0, P, Swap%(P), 160, 0 ! Flytta S¤ till P
160 P = INSTR(1,S¤,chr¤(13)) ! Sök kommandosträngens slut.
170 if P > 0 then S¤ = left¤(S¤,P-1) else S¤ = ""
180 P = INSTR(1,S¤,",") ! Sök kommatecknet
190 if P > 0 and len(S¤) > P then S¤ = right¤(S¤,P+1) else S¤ = ""
200 if S¤ <> "" then chain S¤
Om du skall chaina från PROG1.BAC (som innehåller commonvariabler)
till PROG2.BAC (som också innehåller commonvariabler), så avslutar
du PROG1 med:
1000 CHAIN CommKill,PROG2
Först chainas då över till CommKill (som inte har commonvariabler).
CommKill avläser parametern "PROG2" och chainar vidare.
Jag kan tyvärr inte pröva, men tycker att det här borde fungera.