Covers all dialects of the BASIC programming language
by Aurel » Mon May 30, 2011 4:56 pm
archivio lottery...
- Code: Select all
' note----> YOU MUST PUT AT THE END OF THE
' FILE A LINE WITH THE WORD "END" AT THE VERY BEGINNING OF THE LAST LINE
'note 2 ---> 'MAXIMUM NUMBER OF LINES THAT CAN BE READ FROM FILE = 1000
DEFNUM a b x y edid totallines totallines2 count nch
DEFFILE file1
DEFSTR filename line$ empty w$ w2$ date$ empty2 a$ backcopy
DEFSTR linear[1002] gg
DEFNUM got number newlinenum
DEFSTR gototarget day2$ month2$
DEFSTR day$ month$ year$ singlespace newnum[51] getedit$
DEFNUM test test2 lungh l numgetedit test3
DEFNUM nday nmonth nyear counter k counter2
WIN 0 0 360 520 WS_SYSMENU "ARCHIVIO LOTTO"
MAINCOLOR 220 200 130
'''''''''''''''''''''''''''''''''''''''
'''THIS ARE THE NAMES OF THE WHEELS (ABBREVIATED)
''''''''''''''''''''''''''''''''''''''''
PRINT 5 30 "BA"
PRINT 5 60 "CA"
PRINT 5 90 "FI"
PRINT 5 120 "GE"
PRINT 5 150 "MI"
PRINT 5 180 "NA"
PRINT 5 210 "PA"
PRINT 5 240 "RO"
PRINT 5 270 "TO"
PRINT 5 300 "VE"
LET empty = "END"
LET empty2 = ""
LET y = 30
'''''''''''NOW I WILL DESIGN THE 50 EDITBOXES SINGLE LINE
''''''''''''''''WITH NESTED FOR --> edid IS THE ID OF EACH EDITBOX
''''''''''''''''''''''''SPECIFIED WITH VARIABLE FROM 100 TO 149
LET edid = 100
FOR b = 1 TO 10
LET x = 35
FOR a = 1 TO 5
WCONTROL weditbox x y 30 25 CLASSIC edid
LET edid = edid + 1
LET x = x + 33
NEXT a
LET y = y + 30
NEXT b
'''''''THIS ARE THE BUTTON THAT ALLOWS TO MOVE TROUGH THE STRING ARRAY
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WCONTROL wbutton 5 5 50 20 FLAT_TYPE 200
SETTEXT 200 "LOAD"
WCONTROL wbutton 10 350 40 30 FLAT_TYPE 201
SETTEXT 201 "<<"
WCONTROL wbutton 60 350 40 30 FLAT_TYPE 202
SETTEXT 202 "<"
WCONTROL wbutton 110 350 40 30 FLAT_TYPE 203
SETTEXT 203 ">"
WCONTROL wbutton 160 350 40 30 FLAT_TYPE 204
SETTEXT 204 ">>"
WCONTROL wbutton 30 395 55 40 FLAT_TYPE 205
SETTEXT 205 "GOTO"
WCONTROL weditbox 110 395 80 30 CLASSIC 206
WCONTROL wbutton 30 440 95 40 FLAT_TYPE 207
SETTEXT 207 "GOTO LAST"
'''''this button is for creating a backcopy of the archive
WCONTROL wbutton 220 25 105 60 FLAT_TYPE 208
SETTEXT 208 "BACK COPY"
PRINT 90 405 "--->"
LINE 210 10 210 100 RGB 200 0 120
LINE 340 10 340 100 RGB 200 0 120
LINE 210 10 220 10 RGB 200 0 120
FRONTCOLOR 0 0 0
PRINT 222 5 "backcopy"
LINE 270 10 340 10 RGB 200 0 120
LINE 210 100 340 100 RGB 200 0 120
''''this part is for insert a new line in the archive''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'TRANSLATION :
' NUOVA ESTRAZIONE = NEW DRAWING OF LOTTERY
' GIORNO = DAY
' MESE = MONTH
' ANNO = YEAR
' SALVA = SAVE
LINE 210 130 220 130 RGB 200 0 120
FRONTCOLOR 0 0 0
PRINT 222 125 "nuova estrazione"
LINE 307 130 349 130 RGB 200 0 120
WCONTROL wbutton 220 140 120 40 FLAT_TYPE 220
SETTEXT 220 "NUOVA ESTRAZIONE"
PRINT 220 190 "GIORNO"
WCONTROL weditbox 270 190 30 25 CLASSIC 210
PRINT 220 230 "MESE"
WCONTROL weditbox 270 230 30 25 CLASSIC 211
PRINT 220 270 "ANNO"
WCONTROL weditbox 270 270 60 25 CLASSIC 212
WCONTROL wbutton 220 315 120 40 FLAT_TYPE 213
SETTEXT 213 " SALVA "
LINE 210 130 210 370 RGB 200 0 120
LINE 349 130 349 370 RGB 200 0 120
LINE 210 370 349 370 RGB 200 0 120
WAIT
SUB SHOW
'THIS SUB IS USED FOR SHOWING NUMBERS IN EACH EDITBOX
''''''''''''''''''''''''''''''''''''''''''''''''''''''
PRINT 65 5 " "
PRINT 65 5 totallines
GETSTRDIM w$ = linear.totallines
LET date$ = MID$ w$ 1 11
PRINT 100 5 " "
PRINT 100 5 date$
LET count = 14
LET x = 1
LET nch = 2
LET edid = 100
' I USE MID$ FUNCTION FOR SPLITTING EACH LINE SAVED IN A STRING ARRAY
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FOR y = 1 TO 10
FOR x = 1 TO 5
LET w2$ = MID$ w$ count nch
SETTEXT edid w2$
LET edid = edid + 1
LET count = count + 3
NEXT x
LET count = count + 1
NEXT y
RETURN
SUBID 200
'''''''THIS IS THE SUB THAT SAVES EACH LINE OF THE FILE IN A STRING ARRAY
''''''''''SINCE IT IS NOT POSSIBLE TO EXIT FROM FOR LOOP I PUT THE MARK "END"
''''''''''''''''IN THE LAST LINE OF THE FILE FOR KNOWING WHAT IS THE LAST LINE
'''''''''''''''''''(IT CONTINUES TO READ BUT IN THIS WAY I KNOW WHAT IS THE LAST LINE)
LET filename = "ARCHIVIO.TXT"
OPENFILE file1 <READ> filename
'NOTE MAX 1000 LINES IN THE FILE + LAST LINE WITH "END"
FOR x = 1 TO 1001
READSTRING file1 line$
SETSTRDIM linear.x = line$
IF line$ = empty THEN LET totallines = x
NEXT x
CLOSEFILE file1
LET totallines = totallines - 1
LET totallines2 = totallines
'''''''''''''''''' NOW totallines AND totallines2 CONTAIN THE LAST ELEMENT IN THE STRING
'''''''''''''''''''''' ARRAY WITH DATA
''''AFTER SAVING THE FILE IN A STRING ARRAY , IT IS SHOWED THE LAST LINE IN THE VARIOUS EDITBOXES
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GOSUB SHOW
ENDSUB
SUBID 201
''''''''''''THIS SUB IS ASSOCIATED WITH THE BUTTON "<<"
''''''''''''''''''''''IT LETS YOU GO BACK OF 10 LINES''''
''''''''''''(REMEMBER THAT EACH LINE IS SAVED IN A STRING ARRAY)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IF totallines > 1
LET totallines = totallines - 10
IF totallines < 1 THEN LET totallines = 1
GOSUB SHOW
ENDIF
ENDSUB
SUBID 202
''''''''''''THIS SUB IS ASSOCIATED WITH THE BUTTON "<"
''''''''''''''''''''''IT LETS YOU GO BACK OF 1 LINE''''
''''''''''''(REMEMBER THAT EACH LINE IS SAVED IN A STRING ARRAY)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IF totallines > 1
LET totallines = totallines - 1
IF totallines < 1 THEN LET totallines = 1
GOSUB SHOW
ENDIF
ENDSUB
SUBID 203
''''''''''''THIS SUB IS ASSOCIATED WITH THE BUTTON ">"
''''''''''''''''''''''IT LETS YOU GO FORWARD OF 1 LINE''''
''''''''''''(REMEMBER THAT EACH LINE IS SAVED IN A STRING ARRAY)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IF totallines < totallines2
LET totallines = totallines + 1
IF totallines > totallines2 THEN LET totallines = totallines2
GOSUB SHOW
ENDIF
ENDSUB
SUBID 204
''''''''''''THIS SUB IS ASSOCIATED WITH THE BUTTON ">>"
''''''''''''''''''''''IT LETS YOU GO FORWARD OF 10 LINES''''
''''''''''''(REMEMBER THAT EACH LINE IS SAVED IN A STRING ARRAY)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IF totallines < totallines2
LET totallines = totallines + 10
IF totallines > totallines2 THEN LET totallines = totallines2
GOSUB SHOW
ENDIF
ENDSUB
SUBID 205
'''''''''''''''''THIS SUB IS ASSOCIATED WITH GOTO BUTTON''''''''''
'''''''''''''''''''''FIRST YOU MUST SET WHAT LINE/ARRAY ELEMENT YOU WANT TO SHOW
''''''''''''''''''''''''''''IN THE EDITBOX THAT IS NEAR , AND THEN PRESS THE BUTTON GOTO.
'''''''IF YOU SPECIFY A NUMBER THAT IS LESS THEN 1 OR BIGGER THAT THE NUMBER OF LINES OF THE FILE
''''''''''''''''''''''YOU ARE ADVISED
LET gototarget = GETTEXT 206
LET number = 1
CONVERT got = VAL(gototarget)
IF got < 1
MESSAGEBOX "AVVISO" & "ESTRAZIONE TARGET NON CORRETTA"
LET number = 0
ENDIF
IF got > totallines2
MESSAGEBOX "AVVISO..." & "ESTRAZIONE NON IN ARCHIVIO"
LET number = 0
ENDIF
IF number = 1
LET totallines = got
GOSUB SHOW
ENDIF
ENDSUB
SUBID 207
'''AND FINALLY THIS BUTTON LETS YOU GO TO THE LAST STRING ARRAY ELEMENT
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
LET totallines = totallines2
GOSUB SHOW
ENDSUB
SUBID 208
'''''''''''''''WITH THE BUTTON "BACK COPY" YOU CAN CREATE A BACK COPY OF THE ARCHIVE FILE
'''''''''''''''''''''''' IN ORDER TO USE THE BACK COPY THIS MUST BE RENAMED WITH .TXT EXTENSION
IF totallines2 > 0
LET backcopy = "ARCHIVIO"
OPENFILE file1 <WRITE> backcopy
FOR x = 1 TO totallines2
GETSTRDIM a$ = linear.x
LET a$ = MID$ a$ 1 171
WRITEFILE file1 a$
NEXT x
LET a$ = "END"
WRITEFILE file1 a$
CLOSEFILE file1
MESSAGEBOX "MESSAGGIO" & "CREATA LA BACK COPY (PER UTILIZZARLA RINOMINARLA CON ESTENSIONE .TXT)"
ENDIF
'''''THERE IS A PROBLEM IF YOU CANCEL THE PREVIOUS ENDIF , AND IF YOU WRITE THIS, THE CODE AFTER ELSE IS EXECUTED...
'ELSE
'MESSAGEBOX "MESSAGGIO..." & "PRIMA PREMI LOAD!!!"
'ENDIF
IF totallines2 = 0 THEN MESSAGEBOX "MESSAGGIO..." & "PRIMA PREMI LOAD!!!"
ENDSUB
SUBID 220
'clear all editboxes
'''''''''''''''''''''''''''''''
FOR edid = 100 TO 149
SETTEXT edid ""
NEXT edid
'SET THE NEW LINE NUMBER = LAST LINE + 1
LET newlinenum = totallines2 + 1
'PRINT THE NEW LINE NUMBER
PRINT 65 5 " "
PRINT 65 5 newlinenum
PRINT 100 5 " "
ENDSUB
SUB autobackcopy
'this sub is automaticly called when you want to save a new line in the text file
IF totallines2 > 0 THEN GOSUB auto
RETURN
SUB auto
LET backcopy = "ARCHIVIO"
OPENFILE file1 <WRITE> backcopy
FOR x = 1 TO totallines2
GETSTRDIM a$ = linear.x
LET a$ = MID$ a$ 1 171
WRITEFILE file1 a$
NEXT x
LET a$ = "END"
WRITEFILE file1 a$
CLOSEFILE file1
MESSAGEBOX "MESSAGGIO" & "HO CREATO UNA BACK COPY DELL' ARCHIVIO (PER UTILIZZARLA RINOMINARLA CON ESTENSIONE .TXT)"
RETURN
SUBID 213
' this sub saves a new line in the text file
' it takes care to mantain the archive with maximum 1001 lines
' if the archive is bigger the first lines in the text file are cancelled
LET test = 1
LET lungh = 1
LET test2 = 1
LET test3 = 1
LET counter = 0
LET counter2 = 0
LET gg = "\"
LET singlespace = " "
IF totallines2 = 0
MESSAGEBOX "ERRORE..." & "ERRORE : NON HAI PREMUTO PRIMA LOAD"
ENDIF
IF totallines2 > 0
LET k = totallines2 + 1
IF newlinenum <> k
MESSAGEBOX "ERRORE.." & " NON HAI PREMUTO PRIMA NUOVA ESTRAZIONE"
ENDIF
IF newlinenum2 = k
''''' '''''''''''NOW I READ EDITBOXES GIORNO,MESE,ANNO......
''''' '''''''''''''''''''''''''IF GIORNO = DAY < 9 THEN YOU MUST PUT THE ZERO BEFORE --> 09
''''' '''''''''''''''''''''''''''''IF MESE = MONTH < 9 THEN THEN YOU MUST PUT THE ZERO BEFORE --> 03
''''''''''''''''''''''''''''''YEAR = ANNO MUST BE FROM 1945 TO 9999
LET day$ = GETTEXT 210
LET l = STRLEN(day$)
IF l < 2 THEN GOSUB a1
CONVERT nday = VAL(day$)
IF nday < 1 THEN GOSUB a2
IF nday > 31 THEN GOSUB a2
LET month$ = GETTEXT 211
LET l = STRLEN(month$)
IF l < 2 THEN GOSUB a3
CONVERT nmonth = VAL(month$)
IF nmonth < 1 THEN GOSUB a4
IF nmonth > 12 THEN GOSUB a4
LET year$ = GETTEXT 212
CONVERT nyear = VAL(year$)
IF nyear < 1945 THEN GOSUB a5
IF nyear > 9999 THEN GOSUB a5
IF test = 1
LET date$ = singlespace + day$
LET date$ = date$ + gg
LET date$ = date$ + month$
LET date$ = date$ + gg
LET date$ = date$ + year$
LET date$ = date$ + singlespace
LET date$ = date$ + singlespace
LET edid = 100
LET x = 1
FOR edid = 100 TO 149
LET getedit$ = GETTEXT edid
CONVERT numgetedit = VAL(getedit$)
IF numgetedit < 1 THEN GOSUB text2
IF numgetedit > 90 THEN GOSUB text3
LET l = STRLEN(getedit$)
IF l < 2 THEN LET lungh = 0
SETSTRDIM newnum.x = getedit$
LET x = x + 1
NEXT edid
IF test2 = 0 THEN GOSUB advise1
IF test3 = 0 THEN GOSUB advise2
IF lungh = 0 THEN GOSUB advise3
IF test2 = 1
IF lungh = 1
IF test3 = 1
GOSUB autobackcopy
' IF IT IS ALL OK , NOW WRITE THE NEW LINE.....
'''''''''''''''''''''''''''''''''''''''''''''''''''
LET a = 1
FOR x = 1 TO 5
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 6 TO 10
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 11 TO 15
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 16 TO 20
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 21 TO 25
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 26 TO 30
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 31 TO 35
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 36 TO 40
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 41 TO 45
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
LET date$ = date$ + singlespace
FOR x = 46 TO 50
GETSTRDIM w$ = newnum.x
LET date$ = date$ + w$
LET date$ = date$ + singlespace
NEXT x
OPENFILE file1 <WRITE> filename
''''''''''''''''''''REWRITE THE FILE
'''''''''''''''''''''''''''''''''''''
IF totallines2 > 999 THEN GOSUB mantain
FOR x = 1 TO totallines2
GETSTRDIM a$ = linear.x
WRITEFILE file1 a$
NEXT x
''''''''''''''ADD NEW LINE
IF totallines2 < 1000 THEN WRITEFILE file1 date$
'WRITE THE WORD END
LET w2$ = "END"
WRITEFILE file1 w2$
CLOSEFILE file1
MESSAGEBOX "MESSAGGIO..." & "OPERAZIONE COMPLETATA CON SUCCESSO"
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDSUB
SUB mantain
' this sub reindex the string array AND MANTAIN THE ARCHIVE WITH MAX 1000 LINES
FOR x = 1 TO 999
LET y = x + 1
GETSTRDIM w$ = linear.x
GETSTRDIM w2$ = linear.y
LET w2$ = w$ + empty2
SETSTRDIM linear.x = w2$
NEXT x
SETSTRDIM linear.1000 = date$
RETURN
SUB advise1
MESSAGEBOX "ATTENZIONE..." & "HAI IMMESSO NUMERI MINORI DI 1!!!"
RETURN
SUB advise2
MESSAGEBOX "ATTENZIONE..." & "HAI IMMESSO NUMERI MAGGIORI DI 90!!!"
RETURN
SUB advise3
MESSAGEBOX "ATTENZIONE.." & "DEVI IMMETTERE I NUMERI TRA 0 E 9 CON LO ZERO DAVANTI--> 04"
RETURN
SUB text2
LET test2 = 0
RETURN
SUB text3
LET test3 = 0
RETURN
SUB a1
MESSAGEBOX "ATTENZIONE" & "IMMETTERE I GIORNI TRA 1 E 9 CON LO ZERO DAVANTI..."
LET test = 0
RETURN
SUB a2
MESSAGEBOX "ATTENZIONE.." & "GIORNO NUOVA ESTRAZIONE NON CORRETTO"
LET test = 0
RETURN
SUB a3
MESSAGEBOX "ATTENZIONE" & "IMMETTERE I MESI TRA 1 E 9 CON LO ZERO DAVANTI..."
LET test = 0
RETURN
SUB a4
MESSAGEBOX "ATTENZIONE.." & "MESE NUOVA ESTRAZIONE NON CORRETTO"
LET test = 0
RETURN
SUB a5
MESSAGEBOX "ATTENZIONE..." & "L'ANNO DEVE ESSERE COMPRESO TRA 1945 E 9999"
LET test = 0
RETURN
-

Aurel
- Active member
-
- Posts: 48
- Joined: Thu Nov 25, 2010 4:30 pm
-
Return to BASIC
Who is online
Users browsing this forum: No registered users and 0 guests