Opgelost .bas en .BAS bestanden hoe en wat?

Dit topic is als opgelost gemarkeerd

Senso

Meubilair
Lid geworden
13 jun 2016
Berichten
9.712
Besturingssysteem
W10 Pro en W11 Pro
Office versie
Office 2007 H@S en Office 2021 Prof Plus
Ik wilde een module opslaan en wist de locatie niet meer. Gezocht en zag toen .bas en .BAS de laatste in een map QBAS. Beide hebben het kladblok icoon. Welke software stuurt BAS aan. Wat is dat? Wel lastig .bas en .BAS Voorvertoning werkt niet.
 
In het geval van Excel worden .bas-bestanden vaak gebruikt voor VBA-modules. Je kan ze gewoon met een plaintext-editor openen.
 
Als het een .bas of .BAS is van een geëxporteerde VBA module of Userform dan kan je hem gewoon importeren. De .bas is de extensie Visual Basic. Hoofd- of kleine letters maakt niet uit.
 
Laatst bewerkt:
Gekeken op internet en volgens mij stammen die BAS uit de tijd van MS-DOS 5.0 en zijn van QBasic. Sterk de indruk dat deze weinig met het huidige VBA te maken hebben en onbruikbaar zijn.
 
BAS werkt ook in Visual Basic.
 
Visual Basic6 (VB6) wordt nog steeds gebruikt en heeft ook de .bas extensie.
Als je een VBA module uit Excel exporteert krijgt deze ook de .bas extensie.
Als het gaat om een Userform hoort er ook nog een bestand met de .frm en mogelijk een .frx extensie bij.
 
Daar kun je in Word of Excel toch niets mee?
PHP:
'Programma Lingo versie 5
'
'Dit is een programma in de reeks van beginnersartikelen
'in het tijdschrift PC-Active, van april 1993.
'Copyright 1993 (C) Herman Wind.
'
'Dit programma kiest willekeurig een woord van 5 letters
'uit een reeks. U wordt daarna gevraagd dit woord te raden.
'Als het goed is wordt dat gemeld op het beeldscherm.
'
'Dit is de vijfde versie van het programma.
'Met DATA-regels, met slechts dertig woorden.
'Het antwoord wordt beoordeeld op:
'het aantal goede letters en het aantal goed geplaatste letters.
'In kleur geel wordt weergegeven welke letter goed geplaatst is,
'en in cyaan welke letter aanwezig is in het woord.

'Met RANDOMIZE TIMER wordt de toevalsfaktor vergroot.

'Veel meer routines staan nu als SUBprocedures in het programma.
'U kunt ze in de gewone listing op het beeldscherm alleen
'zien als u met <F2> of via <View> in de menubalk de SUBs
'gaat bekijken.

DEFINT A-Z    'Alle numerieke variabelen worden als integer behandeld.
DECLARE SUB s.Controle ()
DECLARE SUB s.EersteLetter ()
DECLARE SUB s.GeefLettersWeer ()
DECLARE SUB s.Gelijk ()
DECLARE SUB s.Goed ()
DECLARE SUB s.Invoer ()
DECLARE SUB s.IsNietGoed ()
DECLARE SUB s.IsGoed ()
DECLARE SUB s.Kopje ()
DECLARE SUB s.Raamwerk (Links, Rechts, Boven, Onder)
DIM SHARED Raad$, ToetsWoord$, Beurt
DIM SHARED Gelijk$(5), Goed$(5)

Hoeveel = 30              'Het aantal woorden waaruit gekozen kan worden.
CLS                       'Het beeldscherm wordt schoongemaakt.

DIM LingoWoord$(Hoeveel)  'Wanneer het aantal in te lezen woorden groter
                          'is dan 10 moet de waarde gedimensioneerd
                          'worden. `Hoeveel' geeft aan hoeveel woorden
                          'in het geheugen moeten worden opgeslagen.

FOR Aantal = 1 TO Hoeveel  'Binnen deze lus
   READ LingoWoord$(Aantal)'wordt de array ingelezen.
NEXT Aantal

RANDOMIZE TIMER            'Toevalsfaktor afhankelijk van TIMER.
COLOR 2                    'Kleur groen

s.Kopje                      'SUB: Zet in kader LINGO op het scherm.
Toeval = INT(RND(1) * Hoeveel) + 1 'Het toevalsgetal wordt gekozen.
ToetsWoord$ = LingoWoord$(Toeval)  'Dit is het gekozen woord uit de array.

'PRINT ToetsWoord$           'Deze regel moet u verwijderen!
                            'Anders weet men direkt het woord:
                            'Tijdens ontdekken van het programma
                            'is deze regel handig.

s.Controle                  'SUB: Het controlevakje wordt op het
                            'scherm gezet, waarin de antwoorden
                            'worden beoordeeld.

s.EersteLetter              'SUB: Eerste letter van het te raden
                            'woord wordt genoteerd.

DO
  Beurt = Beurt + 1
  s.Invoer                  'SUB: invoerroutine.
  s.Gelijk                  'SUB: welke letters zijn goed en gelijk?
  s.Goed                    'SUB: welke letters zitten in het woord
                            '     maar op de verkeerde plaats?
  LOCATE 9 + Beurt, 21      'Op een relatieve plaats
  PRINT Raad$               'wordt het ingetikte woord neergezet.
  s.GeefLettersWeer         'SUB: de gelijke en de goede letters
                            '     worden respectievelijk in geel
                            '     en cyaan afgedrukt.
  s.IsGoed                  'SUB: Controle of Raad$ in zijn geheel goed is.
  IF Raad$ = ToetsWoord$ THEN EXIT DO
  IF Beurt = 10 THEN s.IsNietGoed   'SUB: afhandeling na 10 fouten.
 
LOOP UNTIL Beurt = 10

END

'Deze reeks met gegevens moet natuurlijk worden aangevuld!

DATA kerst, korst, polen, troef, kopen
DATA schip, schop, schep, ratel, basic
DATA actie, kamer, halen, strop, maken
DATA kreng, tafel, laken, beter, boter
DATA ander, water, wezen, haven, loper
DATA leren, verte, kamer, jager, kopje

SUB s.Controle
COLOR 14
s.Raamwerk 36, 78, 9, 13
LOCATE 10, 39
PRINT "Geel gekleurde letters zijn goed."
LOCATE 12, 39
PRINT "Ze staan op de goede plaats."
COLOR 3
s.Raamwerk 36, 78, 16, 20
LOCATE 17, 39
PRINT "Cyaan gekleurde letters staan wel in"
LOCATE 19, 39
PRINT "het woord, maar op een andere plaats."
COLOR 14
s.Raamwerk 4, 16, 9, 20
COLOR 3
s.Raamwerk 18, 29, 9, 20
COLOR 7

END SUB

SUB s.EersteLetter

LOCATE 10, 21: COLOR 14     'In de kleur geel
PRINT LEFT$(ToetsWoord$, 1) 'wordt de eerste letter van het
COLOR 7                     'te raden woord weergegeven.

END SUB

SUB s.GeefLettersWeer
  FOR Keer = 1 TO 5
     LOCATE 9 + Beurt, 6
     PRINT "Beurt";
     IF Beurt < 10 THEN PRINT " ";
     PRINT Beurt;
     IF Goed$(Keer) <> "" THEN
        LOCATE 9 + Beurt, 20 + Keer
        COLOR 3
        PRINT MID$(Raad$, Keer, 1);
     ELSE
       IF Gelijk$(Keer) <> "" THEN
       LOCATE 9 + Beurt, 20 + Keer
       COLOR 14
       PRINT MID$(Raad$, Keer, 1);
       END IF
     END IF
     COLOR 7
  NEXT Keer

END SUB

SUB s.Gelijk
  FOR Keer = 1 TO 5         'Per Keer worden de waarden bijgesteld.
     Gelijk$(Keer) = ""
     Goed$(Keer) = ""
                            'Vergelijking van de letters.
     IF MID$(Raad$, Keer, 1) = MID$(ToetsWoord$, Keer, 1) THEN
        Gelijk$(Keer) = MID$(ToetsWoord$, Keer, 1)
     END IF
  NEXT Keer

END SUB

  SUB s.Goed
  FOR Keer = 1 TO 5
       plaats = INSTR(ToetsWoord$, MID$(Raad$, Keer, 1))
       IF plaats AND MID$(ToetsWoord$, Keer, 1) <> Gelijk$(Keer) THEN
         IF MID$(ToetsWoord$, plaats, 1) <> Gelijk$(plaats) THEN
           Goed$(Keer) = MID$(ToetsWoord$, Keer, 1)
         END IF
       END IF
  NEXT Keer

END SUB

SUB s.Invoer
  DO               'Invoer op de invoer.
     LOCATE 6, 10
     COLOR 14
     PRINT "Tik een woord in van 5 letters";
     PRINT "                    "
     COLOR 3
     s.Raamwerk 50, 65, 5, 7
     LOCATE 6, 55
     PRINT "_____"
     LOCATE 6, 53
     INPUT Raad$
     COLOR 7
     PRINT
     IF Raad$ = "stop" THEN END
     LOCATE 8, 10
     IF LEN(Raad$) <> 5 THEN
       PRINT "Uw woord moet precies 5 letters lang zijn!"
       SLEEP 1
     ELSE
        FOR Maal = 1 TO 5
           Vlag = 1
           Ascigetal = ASC(MID$(Raad$, Maal, 1))
           IF Ascigetal < 97 OR Ascigetal > 122 THEN
              PRINT "Gebruik de kleine letters van a tot z!"
              Vlag = 0
              SLEEP 1
              EXIT FOR
           END IF
        NEXT Maal
     END IF
     SLEEP 1
     LOCATE 8, 10
     PRINT STRING$(42, " ")
     LOCATE 6, 53
     PRINT "          "
     LOCATE 6, 53
  LOOP UNTIL LEN(Raad$) = 5 AND Vlag = 1
END SUB

SUB s.IsGoed
  IF ToetsWoord$ = Raad$ THEN    'Het goede woord is geraden.
     COLOR 14                    'Kleur geel
     s.Raamwerk 13, 40, 21, 23
     LOCATE 22, 17
     COLOR 28                    'Knipperend rood
     PRINT "Geraden in"; Beurt;
     IF Beurt = 1 THEN
        PRINT "beurt!";
     ELSE
        PRINT "beurten!"
     END IF
     COLOR 7
  END IF
END SUB

SUB s.IsNietGoed
COLOR 14                    'Kleur geel
s.Raamwerk 13, 60, 21, 23
LOCATE 22, 19
PRINT "Niet geraden!  Het woord was:   ";
COLOR 28
PRINT ToetsWoord$
COLOR 7
END SUB

SUB s.Kopje
'Kopje op het scherm
s.Raamwerk 3, 78, 1, 3     'Tekent een kader op het scherm.
LOCATE 2, 11
PRINT "L I N G O   L I N G O   L I N G O   L I N G O   L I N G O"

END SUB

SUB s.Raamwerk (Links, Rechts, Boven, Onder)
    LOCATE Boven, Links
    PRINT CHR$(201)
    LOCATE Boven, Rechts
    PRINT CHR$(187)
    LOCATE Onder, Links
    PRINT CHR$(200)
    LOCATE Onder, Rechts
    PRINT CHR$(188)
 
    FOR Vertikaal = Boven + 1 TO Onder - 1
        LOCATE Vertikaal, Links
        PRINT CHR$(186);
        LOCATE Vertikaal, Rechts
        PRINT CHR$(186);
    NEXT Vertikaal
 
    Horizontaal = Rechts - Links - 1
    Horiz.lijn$ = STRING$(Horizontaal, 205)
    LOCATE Boven, Links + 1
    PRINT Horiz.lijn$
    LOCATE Onder, Links + 1
    PRINT Horiz.lijn$;

END SUB
 
Dat is een wel erg oude Basic code.
Destijds werd Basic nog bij Windows meegeleverd.
 
De toepassing Qbasic.exe staat nog in de DOSFILES > MSDOS50. Het lijkt mij beter deze niet meer uit te voeren en ook die BAS-files niet.
 
Die kan ook alleen worden uitgevoerd als je een Basic interpreter hebt.
 
Betreffend bas bestandje, een bijlage van het tijdschrift PC-Active uit 1993, dient uitgevoerd te worden in Qbasic, maar dan zal je vermoedelijk via dosbox moeten werken, want Qbasic is van oorsprong een DOS programma (16 bits) dat niet meer werkt in de huidige 64 bits Windows versies.
 
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan