Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Dynaamista koodia

Sivun loppuun

mikeful [22.09.2003 09:54:08]

#

Tällä voi lisätä ohjelmaan ylimääräisiä ohjelmarivejä ajon aikana. Tästä on hyötyä jos pitää vaikka alustaa tuntematon määrä muuttujia. Tai jotain tällaista:

type pelaaja
 pisteet as integer
 enerigia as integer
end type

input "Anna nimesi:",plyri$
Aja "dim "+plyri$+" as pelaaja"
'Kokeiluohjelma
DECLARE SUB Aja (komento AS STRING)
LINE INPUT "Kirjoita QBasic komento:", kom$
Aja kom$
SUB Aja (komento AS STRING)
OPEN "temp.bas" FOR BINARY AS 1
'Varmistetaan, että tiedostoa ei ole olemassa (hankalasti)
IF LOF(1) > LEN(komento) THEN
        CLOSE #1
        KILL "temp.bas"
        OPEN "temp.bas" FOR BINARY AS 1
END IF
'Laitetaan annettu merkkijono tiedostoon
FOR a = 1 TO LEN(komento)
        merkki$ = MID$(komento, a, 1)
        PUT #1, a, merkki$
NEXT a
CLOSE #1
'Ajetaan koodit tiedostosta
CHAIN "temp.bas"
'Ja poistetaan todisteet
KILL "temp.bas"
END SUB

Antti Laaksonen [23.09.2003 13:29:01]

#

Ovela juttu, mutta ei toimi EXE-tiedostoissa. Tiedoston olemassaolon voi tarkistaa myös näin:

IF DIR$("c:\hakemisto\tiedosto.bas") = "" THEN
   PRINT "Tiedostoa ei ole olemassa."
ELSE
   PRINT "Tiedosto on olemassa."
END IF

thefox [23.09.2003 14:07:53]

#

Ja tuo Laaksosen mainitsema tarkastus on toki parempi. Kiva esimerkki, eihän tuollaisia tietystikään tulisi käyttää, CHAINitkin ovat jäänteitä aatamin-aikaisista beisikeistä :)

tejeez [23.09.2003 14:56:14]

#

Tästähän voi vaikka olla joskus jotain hyötyä.. tuo CHAIN-komentoko lisää sen siihen ohjelmaan?

mikeful [23.09.2003 15:34:35]

#

Juu. Toinen vastaava komento on RUN, mutta en oikein tiedä mitä eroa niilä on.

rndprogy [23.09.2003 16:56:02]

#

hmm... Suht hyödyllinen

juhaz [23.09.2003 22:07:55]

#

Aika hyödyllinen, mutta tuo ei siis toimi jos ohjelma on käännetty exeksi? Damn! Heti tuli vaikka mitä ideoita....

sooda [24.09.2003 10:04:24]

#

Jee ai niin chainikin on olemassa... :( mä oon tehny ihan turhaan sairaan ison laskurin... niin, asiasta poiketen, tein kerran qb:llä hienon laskurin jolla voi laskea vaikka "sqr(val("jee123")+1)/sin(6)". Tein sen silläin että se tallensi toiseen laske.bas tiedostoon "print #1," + lasku$" kun se oli avannut yhden temppitiedoston jonka sisällön tää itse laskuri sitten tarkisti, ja koko ulkoisen laskurijutskan(siis tää laske.bas) ohjelma sitten käänsi qb:n linkkereillä ja ajoi sitten ja katsoi tiedostosta mitä tuli. Arvatkaa oliko hidas... ja kun sen voi sitten tehdä CHAINillakin... kivaa! tein vähä turhaan. No joo ette kuitenkaan tajua mun sönkötyksiä... mutta saapahan purkaa tätä "höh sen olis voinu tehdä noinkin vitsi mun kanssa" jonnekki :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta