Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Q-basic näppäin ongelma!

Taluska [31.10.2002 10:11:22]

#

Tein juuri sellaisen pienen login aohjelman Q-basicilla joka kysyy ensin login namea ja sitten passwordia mutta haluaisin teitää että miten saan suljettua ne näppäimmet joilla pystyy ohittamaan ohjelman. Kun käynnistää ohjlelman ja painaa esim. ctrl+c (vai) k niin hyppää ohjelman yli. saisiko niitä suljettua?

Ja sitten vielä että passwordin kirjoittaa tulee suoraan näytölle mitkä olen kirjoittamassa. Saisiko siihen laitettua esim ******* noita merkkejä ettei kaveri nää mitä kirjoitan?

thefox [31.10.2002 11:24:18]

#

Hyppää ohjelman yli? Joka tapauksessa, CTRL+C:n ja CTRL+BREAK:n disabloiva koodi olisi tällainen (ei omaa tekoa, vaan minuutin googletuksen tulosta):

'QBasic NoBreak v1.0a
'Copyright (c)1995 by Daniel Trimble
'Public Domain - use at your own risk.

CLS
DO
   KEY 15, CHR$(4 + 128 + 32 + 64) + CHR$(70)
   ON KEY(15) GOSUB NoBreak: KEY(15) ON
   KEY 16, CHR$(4 + 128) + CHR$(70): ON KEY(16) GOSUB NoBreak: KEY(16) ON
   KEY 17, CHR$(4 + 128 + 32) + CHR$(70): ON KEY(17) GOSUB NoBreak
   KEY(17) ON: KEY 18, CHR$(4 + 128 + 64) + CHR$(70): ON KEY(18) GOSUB NoBreak
   KEY(18) ON: KEY 19, CHR$(4) + CHR$(70): ON KEY(21) GOSUB NoBreak
   KEY(21) ON: KEY 22, CHR$(4 + 64) + CHR$(70)
   ON KEY(22) GOSUB NoBreak: KEY(22) ON: KEY 23, CHR$(4 + 32) + CHR$(46)
   ON KEY(23) GOSUB NoBreak: KEY(23) ON: KEY 24, CHR$(4 + 64) + CHR$(46)
   ON KEY(24) GOSUB NoBreak: KEY(24) ON
   KEY 25, CHR$(4 + 32 + 64) + CHR$(46): ON KEY(25) GOSUB NoBreak: KEY(25) ON

   LOCATE 1, 1, 0: PRINT "QBasic NoBreak v1.0a"
   LOCATE 2, 1, 0: PRINT "Copyright (c)1995 by Daniel Trimble"
   LOCATE 4, 1, 0: PRINT "This program and all source is public domain.  I will not be held responsible"
   LOCATE 5, 1, 0: PRINT "for any damage this program may cause.  I am not at fault; use this at your"
   LOCATE 6, 1, 0: PRINT "own risk - period!"
   LOCATE 15, 1, 0: PRINT "Try pressing either CTRL-BREAK or CTRL-C.  Nothing will happen!"
   LOCATE 16, 1, 0: PRINT "To end the program, hit ENTER."
   IF INKEY$ = CHR$(13) THEN END
LOOP

NoBreak: RETURN

'ctrl =4          extended keys=128
'num lock=32      c=46
'cap lock=64

Ja sitten siihen toiseen kysymykseen eli sehän menisi jotenkin niin, että loopisi tarkkailisit käyttäjän painamia nappeja (INKEY$), ja lisäilisit niitä johonkin stringiin, jonka pituuden mukaan sitten ulostaisit tähtiä ruudulle.
Samalla aina tarkistaisit, että jos näppäin on return ("enter") (CHR$(13)) niin lopetat loopin ja jatkat ohjelmaa, jos se on backspace (ei nyt muistu koodi mieleen mutta tsekkaa se näppäinkoodi-referenssi) niin lyhennät sitä stringiä lopusta päin :)
Toivottavasti auttoi.. valmista koodia minulla ei ole tapana antaa.

Antti Laaksonen [31.10.2002 11:47:34]

#

Tein vielä tuon fawkzin neuvoman funktion aamupuhteiksi, ettei itse tarvitse päätä vaivata...;) Eli tuo palauttaa käyttäjän kirjoittaman salasanan merkkijonona ja max% on salasanan maksimipituus.

FUNCTION PyydaSalasana$ (max%)
  DO
    a$ = INKEY$
    SELECT CASE a$
    CASE "a" TO "z", "A" TO "Z", "0" TO "9"
      IF LEN(y$) < max% THEN
        y$ = y$ + a$
        PRINT "*";
      END IF
    CASE CHR$(8)
      LOCATE CSRLIN, LEN(y$)
      PRINT "  ";
      LOCATE CSRLIN, LEN(y$)
      y$ = LEFT$(y$, LEN(y$) - 1)
    CASE CHR$(13)
      EXIT DO
    END SELECT
  LOOP
  PyydaSalasana$ = y$
END FUNCTION

Taluska [01.11.2002 09:50:21]

#

Kiitoksia vinkeistä, auttoivat kovasti!

Vastaus

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

Tietoa sivustosta