12.3.1997 build 2 1x2 Rich ohjelman laajennukset ============================== 1. Yleistä 2. 1NF tiedostot 3. OAN tiedostot 4. pitkä##.dat 5. lotto##.dat ja vilot##.dat 6. 1x2rich.ini 7. Taustan piirto 8. ohjelma.!!!:n käyttö 9. Budjetin lisäys *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Yleistä ------- Ohjelma tukee myös käyttäjien itse tehtyjä laajennuksia. Näitä voivat kaikki ohjelman käyttäjät tehdä itse. Oman laajennuksen tekemiseen tarvitaan: * ohjelma.exe 'itse ohjelma * ohjelma.1nf 'infotiedosto jota päävalikko hyödyntää * tieto.dat 'mahdolliset laajennusohjelman tarvitsemat tiedostot Ohjelman on hyvä tukea seuraavia järjestelyitä: * ohjelma.!!! * end.$$$ * taustan piirto Tämä dokumentti selvittää tiedostomuotoja sekä päävalikon suhdetta aliohjelmiin. Ohjelmat tottelevat end.$$$ -käskyä, eli jos ko. tiedosto löytyy, suljetaan ohjelma. Jos ohjelma.!!! -löytyy, sieltä löytyviä käskyjä toteutetaan seuraavasti: Käsky Tapahtuma ----------------- #0 Normaali #1 Minimized #2 Maximized *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* 1NF tiedostot ------------- Ohjelma tukee myös käyttäjien itse tehtyjä laajennuksia. Näitä voivat kaikki ohjelman käyttäjät tehdä itse. Jokainen päävalikkoon lisättävä ohjelma tai tiedosto vaatii .1NF tiedoston, jonka rakenne on seuraava. '-merkit poistetaan. ----------Alku---------- 1. Headeri, jonka avulla ohjelma tunnistaa että kyseessä on oikea tyyppi '1x2 Rich ohjelman kuvaustiedosto' 2. Tiedostotyypin versio (1NF), versiossa 1.30 1 '1' 3. Ajettava ohjelma (esim. lotto.exe) 4. Painikkeen teksti (esim. Lotto ja Vikinglotto) 5. Ohjelman title (Options|aplication|title) 6. Laajennuksen versio (esim v. 1.0) 7. Tekijä (esim. Nettipaja) 8. Kuvatiedoston nimi (BMP) (esim. butlotto.bmp) ----------Loppu---------- ' VB Koodi fnum = FreeFile Open fname For Input As fnum Input #fnum, onko ' If onko <> "1x2 Rich ohjelman kuvaustiedosto" Then MsgBox fname & " on " & onko & ", tiedosto ei ehkä lataudu oikein!" End If Input #fnum, tyyli If tyyli < 1 Or tyyli > 1 Then MsgBox fname & " on uudempaa tai vanhempaa tyyppiä (" & tyyli & "), tiedosto ei ehkä lataudu oikein!" End If Input #fnum, onko If fileexists(onko) = False Then fname2 = onko Mid(fname2, Len(fname2) - 2, 3) = "exe" If fileexists(fname2) = False Then dis = False MsgBox onko & " ohjelma on määritelty tiedostossa " & fname & ", mutta sitä ei löydy!" End If Else fname2 = onko End If Input #fnum, onko If onko <> "" Then fileinfo = onko Else fileinfo = "[" & fname & "]" Input #fnum, onko If onko <> "" Then acti = onko Input #fnum, onko If onko <> "" Then verssu = onko Else verssu = "[tuntematon]" Input #fnum, onko If onko <> "" Then credit = onko Else credit = "[Nettipaja]" Input #fnum, onko If fileexists(onko) = True Then pic = onko Else pic = "" Close 'VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* OAN tiedostot versio 2 (1x2rich 1.2) ------------------------------------ OAN tiedostoihin tallennetaan otteluanalyysit, eli analyysi-ikkunan tiedot. OAN versio 2 jota käyttää analyysi v. 1.2 ----------Alku---------- 1. Tiedostotyypin versio (OAN), versiossa 1.2x '2' '2' 2. Headeri, jonka avulla ohjelma tunnistaa että kyseessä on oikea tyyppi 'Otteluanalyysi' 3. Kotijoukkue 4. Vierasjoukkue 5. tiedot: -\ 1..3 Kotijoukkueen kotivoitot 1..3 Kotijoukkueen tasapelit 1..3 Kotijoukkueen vieraspelit 1..3 Kotijoukkueen tehdyt maalit 1..3 Kotijoukkueen päästetyt maalit 1..3..5 Viimeisimmät kohtaamiset 1..3 Vierasjoukkueen kotivoitot 1..3 Vierasjoukkueen tasapelit 1..3 Vierasjoukkueen vieraspelit 1..3 Vierasjoukkueen tehdyt maalit 1..3 Vierasjoukkueen päästetyt maalit 2..4..6 Viimeisimmät kohtaamiset -/ 6. Kertoimet 1, x, 2 kerrottuna sadalla 7. Sarjatasomuutos -5:stä 5:een 8. Commenttiteksti ----------Loppu---------- ' VB Koodi: Open fname For Input As fnum Input #fnum, tyyli If tyyli < 1 And tyyli > 2 Then lataa = "" Close MsgBox fname & " on uudempi tai vanhempi. Ei voida jatkaa." Exit Sub End If Input #fnum, onko If onko <> "Otteluanalyysi" Then lataa = "" Close MsgBox fname & " on '" & onko & "'. Ei voida jatkaa." Exit Sub End If Input #fnum, jengi1 Input #fnum, jengi2 For i = 0 To 5 Input #fnum, a text1(i).Text = a Input #fnum, a text2(i).Text = a Input #fnum, a text3(i).Text = a Input #fnum, a text4(i).Text = a Input #fnum, a text5(i).Text = a Input #fnum, a text7(i).Text = a Next For i = 0 To 2 Input #fnum, a a = a / 100 For j = 1 To Len(a) If Mid(a, j, 1) = "," Then Mid(a, j, 1) = "." End If Next text6(i).Text = a Next Input #fnum, a hscroll1.Value = a If tyyli = 2 Then Input #fnum, a comment.Text = a End If Close ' VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* pitkä##.dat tiedostot versio 5 (1x2 Rich 1.2) --------------------------------------------- Pitkävetotiedosto. ----------Alku---------- 1. Tiedostotyypin versio (pitkä##.dat), versiossa 1.2x '5' '5' 2. Headeri, jonka avulla ohjelma tunnistaa että kyseessä on oikea tyyppi 'Pitkävetotiedosto' 3. Panos 4. Hinta 5. Järjestelmä: 1, 4, 5, 10, 15, 20 tai 60 6. Kohteet 7. Tiedot -\ kohtet - Kohde - merkki1 - merkkix - merkki2 - Mahdollisuus prosentteina 1 (pro1) - Mahdollisuus prosentteina x (prox) - Mahdollisuus prosentteina 2 (pro2) - Ottelu -\ 3 - kerroin -/ - Kohteen mahdollisuus toteutua (pro1 + prox + pro2) -\ jos tyyli > 4 - Ottelun OAN tiedosto -/ -/ 8. Viikko 9. Vuosi ----------Loppu---------- ' VB Koodi: Open fname For Input As fnum Input #fnum, tyyli If tyyli < 4 Or tyyli > 5 Then Close MsgBox "Uudempi tai vanhempi tiedosto (" & tyyli & "), ei voida jatkaa !" Exit Sub End If Line Input #fnum, onko If onko <> "Pitkävetotiedosto" Then MsgBox "Tämä on _* " & onko & " *_, ei voida jatkaa !" Close Exit Sub End If Input #fnum, pitkäpanos Input #fnum, pitkähinta Input #fnum, pitkäjärj Input #fnum, pkm For i = 1 To pkm Input #fnum, pitkäkohde(i) text1(i - 1).Text = Val(pitkäkohde(i)) Input #fnum, pitmerkki1(i) Input #fnum, pitmerkkix(i) Input #fnum, pitmerkki2(i) Input #fnum, pro1(i) Input #fnum, prox(i) Input #fnum, pro2(i) Line Input #fnum, ottelu(i) For j = 1 To 3 Line Input #fnum, kerroin(i, j) ' ! line ! Next textkerroin1(i - 1) = kerroin(i, 1) textkerroinx(i - 1) = kerroin(i, 2) textkerroin2(i - 1) = kerroin(i, 3) Input #fnum, pitpc(i) If tyyli > 4 Then Line Input #fnum, pottfname(i) End If Next i Input #fnum, viikko Input #fnum, vuosi hscrollviikko.Value = viikko hscrollvuosi.Value = vuosi Close ' VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* lotto##.dat ja vilot##.dat tiedostot versio 4 --------------------------------------------- Lottotiedostojen rakenne (1x2 Rich 1.2 ja 1.30) ' VB koodi fnum = FreeFile Open fname For Input As fnum Input #fnum, tyyli If tyyli <> 4 Then MsgBox "Tämä on uudempi tai vanhempi lottotiedosto, ei voida jatkaa!" Close Exit Sub End If '*******Tyyli4******** If tyyli = 4 Then Line Input #fnum, onko If onko = "Lottotiedosto" Then Else msg = "Äläpä lottoa, tämä ei ole 1x2rich Lottotiedosto" msg = msg + ". Tämä on " & onko MsgBox msg, , versio Close Exit Sub End If Input #fnum, lottotyyli '1=Lotto, 2=Vikinglotto Input #fnum, lottorivi 'montako riviä Input #fnum, lottojärj 'Lotto: järjestelmä, 1= tavallinen, 2=järj8... 6=harava12... 'Vikinglotto: 1=tavallinen,2=järj8... 7=harava12... Input #fnum, lottoviikot 'viikkoa voimassa Input #fnum, viikko Input #fnum, vuosi hscrollviikko.Value = viikko hscrollvuosi.Value = vuosi HScrollviikko_Change If lottotyyli = 1 Then For i = 1 To lottorivi For j = 1 To lottojärj + 6 Input #fnum, lottonum(i, j) Next Next End If If lottotyyli = 2 Then For i = 1 To lottorivi For j = 1 To lottojärj + 5 Input #fnum, lottonum(i, j) Next Next End If Close 'VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* 1x2rich.ini tiedosto versio 1 ja 2 (1x2 Rich 1.2 ja 1.30) --------------------------------------------------------- ' VB Koodi: Sub lataaini() 'varsinainen ini On Error GoTo lierr fname = "1x2rich.ini" If fileexists(fname) = True Then fnum = FreeFile Open fname For Input As fnum Line Input #fnum, onko If onko <> "1x2rich initiedosto" Then Close'väärä tunniste MsgBox fname & " on " & onko Exit Sub End If Input #fnum, tyyli If tyyli < 1 Or tyyli > 2 Then Close'uudempaa ei tunneta MsgBox fname & " on uudempi (" & tyyli & ") kuin ohjelma. (x<>1)" Exit Sub End If Line Input #fnum, onko Input #fnum, painotussäätö If tyyli > 1 Then Line Input #fnum, onko Input #fnum, tausta'-1=tausta on päällä, 0 = off End If Close Else painotussäätö = 5 tausta = true MsgBox "Tiedostoa " & fname & " ei löydy!" End If If painotussäätö < 0.1 Or painotussäätö > 50 Then painotussäätö = 5 Exit Sub lierr: MsgBox Error, , "Lataa 1x2rich.ini" Resume Next End Sub ' VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Taustan piirto -------------- Kaikki 1x2rich 1.30 versiosta ylöspäin piirtävät taustan seuraavalla koodilla. ' VB Koodi Sub pita(frm As Form) On Error GoTo pitar Dim px As Integer, py As Integer 'tausta.picture on taustan apukehys 'tausta.bmp on vakiotausta 'kutsu koodia ' 'pita me ' 'Pistä tämä Bassiin: ' ' Declare Function bitblt Lib "GDI" (ByVal ThDC%, ByVal Tx%, ByVal Ty%, ByVal w%, ByVal h%, ByVal ShDC%, ByVal Sx%, ByVal Sy%, ByVal rop&) As Integer ' If tausta = True Then Screen.MousePointer = 11 If fileexists("tausta.bmp") Then frm.tausta.Picture = LoadPicture("tausta.bmp") Debug.Print "koko:", frm.ScaleWidth, frm.tausta.Width For px = 0 To frm.ScaleWidth + frm.tausta.Width Step frm.tausta.Width For py = 0 To frm.ScaleHeight + frm.tausta.Height Step frm.tausta.Height x% = bitblt(frm.hDC, px, py, frm.tausta.Width, frm.tausta.Height, frm.tausta.hDC, 0, 0, &HCC0020) Next py Next px DoEvents frm.Refresh End If Screen.MousePointer = 0 End If Exit Sub pitar: MsgBox Error, , "pita" Exit Sub End Sub 'VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ohjelma.!!!:n käyttö -------------------- Ajetaan ohjelma butlaunch(index) tai activoidaan activatetitle(index) ja kirjoitetaan ohjelma.!!! ' VB Koodi AppActivate activatetitle(index) If Err Then x = Shell(butlaunch(index), 1) Debug.Print butlaunch(index) Else 'Jos löytyy, lähetä viesti "normaali" fname = butlaunch(index) Mid(fname, Len(fname) - 2, 3) = "!!!" fnum = freefile Open fname For Output As fnum Print #fnum, "#0" Close End If ' VB koodi loppu Tarkastatetaan löytyykö end.$$$ tai ohjelma.!!! ' VB koodi If fileexists("end.$$$") = True Then End Dim fnamex As String fnamex = "lotto.!!!" fnum = FreeFile If fileexists(fnamex) Then Open fname For Input As fnum Input #fnum, onko Call event(Me, onko) Close Kill fnamex End If ' VB Koodi loppu Eventit ' VB koodi Sub event(frm As Form, eventcmd As String) Dim eventverssu As String eventverssu = "1x2 Rich event v. 1.301" Select Case eventcmd Case "#0" frm.WindowState = 0 Case "#1" frm.WindowState = 1 Case "#2" frm.WindowState = 2 Case Else MsgBox "Tuntematon käsky " & eventcmd, , eventverssu End Select End Sub ' VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Budjettiin lisäys ----------------- Budjettiin voidaan helposti lisätä tapahtuma seuraavien koodien avulla. ' VB Koodi If ur = 2 Then i = MsgBox("Lisätäänkö tämä budjettiin ?", 4 + 32 + 256) If i = 7 Then Exit Sub lisääbudjet ("Budjet|" & tieto(1).Caption & "|Tulosveto||" & tulhinta & "|") ' Tunniste päiväys aihe ^^- ei+, ^^- hinta End If ' VB Koodi loppu Lisääbudjet sub ' VB Koodi Sub lisääbudjet(textiä As String) On Error GoTo Hupskeikkaaa fnum = FreeFile Open "budjet.!!!" For Append As fnum Print #fnum, textiä Close Exit Sub Hupskeikkaaa: MsgBox Error, , "Lisääbudjet: " & textiä Resume Next End Sub ' VB Koodi loppu