Siis ohjelmassani on joku ongelma. Kun ensimmäinen formi, jossa näkyy ohjelman nimi ym. (splash) piiloutuu, niin seuraava formi ei suostu näkymään KAIKILLA koneilla. Oon koittanut monilla samanlaisilla koulun koneilla, ja osalla toimii, osalla ei. Myös parilla kaverilla ei toimi. Mistä vois johtua?
Auttakaa nopeesti
Vaikuttaa siltä että ohjelmassasi on bugi. Olisikohan ohjelman lähdekoodin antamisesta mitään apua?
Private Sub Form_Load()
On Error Resume Next
'progressbarin taustaväri
SetPBBackColor progressbar1.hwnd, RGB(0, 0, 0)
SetPBBarColor progressbar1.hwnd, RGB(255, 0, 0)
Me.Show
progressbar1.Value = "25"
Dim sngTime2
sngTime2 = Timer + 1
Do While Timer < sngTime2
DoEvents
Loop
'Tarkastetaan, että onko päivityksiä saatavilla.
Dim infoversio
'On Error GoTo virhe
'Dim Inet2 As Object
'Set Inet2 = CreateObject("InetCtls.Inet")
infoversio = Inet2.OpenURL("http://personal.inet.fi/peli/iskari/qswitch/versio2.txt")
If InStrRev(infoversio, "<html>") Then
GoTo virhe
End If
'Dim Inet1 As Object
'Set Inet1 = CreateObject("InetCtls.Inet")
progressbar1.Value = "50"
Dim sourcec
sourcec = Inet1.OpenURL("http://personal.inet.fi/peli/iskari/qswitch/versio.txt")
''''''''''''''''''''''''''''''''
'Tätä koitin, siksi se on tässä'
Load twoK
''''''''''''''''''''''''''''''''
teksti2.Visible = True
'Jos tulee esim 404, niin huomataan se katsomalla onko sivulla <html>
If sourcec > "1190" Then
If InStrRev(sourcec, "<html>") Then
GoTo virhe
End If
If InStrRev(sourcec, "<HTML>") Then
GoTo virhe
End If
'Jos löytyy uudempi versio niin msgbox
If MsgBox("Saatavana versio " & infoversio & " Ladataanko?", vbYesNo + 64, "Päivitys saatavilla!") = vbYes Then
download.Show
Exit Sub
End If
End If
'Aloitussivu
Dim aloitussivu
aloitussivu = GetSetting("QSwitch", "Asetukset", "alkusivu", "http://www.quirzo.urli.net/")
twoK.WebBrowser1.Navigate aloitussivu
progressbar1.Value = "75"
''Haetaan rekisteristä asetukset
''Ekakerta
Dim ekakerta
ekakerta = GetSetting("QSwitch", "Asetukset", "ekakerta", "1")
''Ohjelman sijainti
Dim sijainti
sijainti = GetSetting("QSwitch", "Asetukset", "sijainti", "0")
If sijainti = "0" Then
SaveSetting "qswitch", "Asetukset", "sijainti", App.Path
End If
''Java
Dim java
java = GetSetting("QSwitch", "Asetukset", "java", "0")
''Oma tausta ja fonttiväri
Dim omavari
omavari = GetSetting("QSwitch", "Asetukset", "omavari")
''Serverlista
Dim lista
lista = GetSetting("QSwitch", "Asetukset", "serverlista", "0")
'Värit muutetaan!
On Error Resume Next
If omavari = "1" Then
Dim vari
Open App.Path & "/oma_taustaväri.ini" For Input As #1
Input #1, vari
twoK.BackColor = vari
twoK.txtuser.BackColor = vari
twoK.serveri.BackColor = vari
twoK.serveri.BackColor = vari
'twoK.overall(0).BackColor = vari
twoK.frame1.BackColor = vari
twoK.Frame3.BackColor = vari
'twoK.member.BackColor = vari
'twoK.free.BackColor = vari
twoK.Frame4.BackColor = vari
twoK.Frame5.BackColor = vari
'twoK.Label1.BackColor = vari
'twoK.Label2.BackColor = vari
'statsit
twoK.txtuser.BackColor = vari
twoK.overall(1).BackColor = vari
twoK.lblSkilltotal(1).BackColor = vari
twoK.lblattack(1).BackColor = vari
twoK.lblStrength(1).BackColor = vari
twoK.lbldefence(1).BackColor = vari
twoK.lblprayer(1).BackColor = vari
twoK.lblranged(1).BackColor = vari
twoK.lblmagic(1).BackColor = vari
twoK.lblrunecrafting(1).BackColor = vari
twoK.lblHP(1).BackColor = vari
twoK.lblagility(1).BackColor = vari
twoK.lblherblore(1).BackColor = vari
twoK.lblthieving(1).BackColor = vari
twoK.lblcrafting(1).BackColor = vari
twoK.lblfletching(1).BackColor = vari
twoK.lblslayer(1).BackColor = vari
twoK.lblmining(1).BackColor = vari
twoK.lblsmithing(1).BackColor = vari
twoK.lblfishing(1).BackColor = vari
twoK.lblcooking(1).BackColor = vari
twoK.lblfm(1).BackColor = vari
twoK.lblwc(1).BackColor = vari
twoK.lblfarming(1).BackColor = vari
twoK.statsiframe.BackColor = vari
twoK.Label4.BackColor = vari
Statsit.BackColor = vari
twoK.detail.BackColor = vari
twoK.overall(1).BackColor = vari
twoK.combat(0).BackColor = vari
Close #1
Open App.Path & "/oma_fonttiväri.ini" For Input As #1
Dim vari2
Input #1, vari2
'twoK.member.BackColor = vari2
'twoK.free.BackColor = vari2
twoK.Status.ForeColor = vari2
twoK.txtuser.ForeColor = vari2
twoK.Line4.BorderColor = vari2
twoK.overall(1).ForeColor = vari2
twoK.Shape2(1).BorderColor = vari2
twoK.overall(0).ForeColor = vari2
twoK.detail.ForeColor = vari2
twoK.frame1.ForeColor = vari2
twoK.Label4.ForeColor = vari2
twoK.Frame3.ForeColor = vari2
twoK.Frame4.ForeColor = vari2
twoK.Frame5.ForeColor = vari2
twoK.serveri.ForeColor = vari2
twoK.serveri.ForeColor = vari2
twoK.Line1.BorderColor = vari2
twoK.raami.BorderColor = vari2
twoK.Line2.BorderColor = vari2
twoK.overall(1).ForeColor = vari2
Close #1
Else
Dim r As Integer
Dim g As Integer
Dim b As Integer
r = GetSetting("QSwitch", "Asetukset", "tausta-pun", "0")
g = GetSetting("QSwitch", "Asetukset", "tausta-vih", "0")
b = GetSetting("QSwitch", "Asetukset", "tausta-sin", "0")
twoK.BackColor = RGB(r, g, b)
twoK.txtuser.BackColor = RGB(r, g, b)
twoK.serveri.BackColor = RGB(r, g, b)
twoK.serveri.BackColor = RGB(r, g, b)
twoK.overall(0).BackColor = RGB(r, g, b)
twoK.frame1.BackColor = RGB(r, g, b)
twoK.Frame3.BackColor = RGB(r, g, b)
twoK.Frame4.BackColor = RGB(r, g, b)
twoK.Frame5.BackColor = RGB(r, g, b)
'twoK.Label1.BackColor = RGB(r, g, b)
'twoK.Label2.BackColor = RGB(r, g, b)
'statsit
twoK.txtuser.BackColor = RGB(r, g, b)
twoK.overall(1).BackColor = RGB(r, g, b)
twoK.lblSkilltotal(1).BackColor = RGB(r, g, b)
twoK.lblattack(1).BackColor = RGB(r, g, b)
twoK.lblStrength(1).BackColor = RGB(r, g, b)
twoK.lbldefence(1).BackColor = RGB(r, g, b)
twoK.lblprayer(1).BackColor = RGB(r, g, b)
twoK.lblranged(1).BackColor = RGB(r, g, b)
twoK.lblmagic(1).BackColor = RGB(r, g, b)
twoK.lblrunecrafting(1).BackColor = RGB(r, g, b)
twoK.lblHP(1).BackColor = RGB(r, g, b)
twoK.lblagility(1).BackColor = RGB(r, g, b)
twoK.lblherblore(1).BackColor = RGB(r, g, b)
twoK.lblthieving(1).BackColor = RGB(r, g, b)
twoK.lblcrafting(1).BackColor = RGB(r, g, b)
twoK.lblfletching(1).BackColor = RGB(r, g, b)
twoK.lblslayer(1).BackColor = RGB(r, g, b)
twoK.lblmining(1).BackColor = RGB(r, g, b)
twoK.lblsmithing(1).BackColor = RGB(r, g, b)
twoK.lblfishing(1).BackColor = RGB(r, g, b)
twoK.lblcooking(1).BackColor = RGB(r, g, b)
twoK.lblfm(1).BackColor = RGB(r, g, b)
twoK.lblwc(1).BackColor = RGB(r, g, b)
twoK.lblfarming(1).BackColor = RGB(r, g, b)
twoK.statsiframe.BackColor = RGB(r, g, b)
twoK.Label4.BackColor = RGB(r, g, b)
Statsit.BackColor = RGB(r, g, b)
twoK.detail.BackColor = RGB(r, g, b)
twoK.overall(1).BackColor = RGB(r, g, b)
twoK.combat(0).BackColor = RGB(r, g, b)
progressbar1.Value = "100"
Dim p As Integer
Dim v As Integer
Dim s As Integer
p = GetSetting("QSwitch", "Asetukset", "fontti-pun", "255")
v = GetSetting("QSwitch", "Asetukset", "fontti-vih", "0")
s = GetSetting("QSwitch", "Asetukset", "fontti-sin", "0")
twoK.Status.ForeColor = RGB(p, v, s)
twoK.txtuser.ForeColor = RGB(p, v, s)
twoK.Line4.BorderColor = RGB(p, v, s)
twoK.overall(1).ForeColor = RGB(p, v, s)
twoK.Shape2(1).BorderColor = RGB(p, v, s)
twoK.overall(0).ForeColor = RGB(p, v, s)
twoK.raami.BorderColor = RGB(p, v, s)
twoK.detail.ForeColor = RGB(p, v, s)
twoK.frame1.ForeColor = RGB(p, v, s)
twoK.Label4.ForeColor = RGB(p, v, s)
twoK.Frame3.ForeColor = RGB(p, v, s)
twoK.Frame4.ForeColor = RGB(p, v, s)
twoK.Frame5.ForeColor = RGB(p, v, s)
twoK.serveri.ForeColor = RGB(p, v, s)
twoK.serveri.ForeColor = RGB(p, v, s)
twoK.Line1.BorderColor = RGB(p, v, s)
twoK.Line2.BorderColor = RGB(p, v, s)
twoK.overall(1).ForeColor = RGB(p, v, s)
End If
Dim sngTime3
sngTime3 = Timer + 1
Do While Timer < sngTime3
DoEvents
Loop
'Haetaan detail -asetukset
Dim detail
detail = GetSetting("QSwitch", "Asetukset", "detail", "0")
If detail = "1" Then
twoK.detail.Value = "1"
Else
twoK.detail.Value = "0"
End If
If lista = "1" Then
servut.Show
End If
'''ONGELMA ON EHKÄ TÄSSÄ?
twoK.Visible = True 'tämä ei kaikilla näy
Me.Visible = False 'tämä (siis eka formi) kyllä piiloutuu
Exit Sub
virhe:
virhe.Caption = "Päivityksiä ei voitu tarkastaa."
End SubKyseessähän on siis runescape -peliin clientti. Jotain kommentteja siihen oon laittanu.
Tuossa on siis sen ekan formin form_load() subi
Ja toisen formin nimi on twoK
Kyselkää jos tarviitte apua
Sitä voi käyttää järkeä, kun miettii, mitä osia koodista kannattaa pasteta. Sisennyksetkin olisivat paikallaan. Sanon suoraan, että minua ei ainakaan kiinnosta lukea noin sottaista koodia läpi, varsinkin, kun siitä ehkä 1% on oleellista bugin kannalta. Varmaankin twoK.Show olisi kuitenkin paikallaan, eikö?
Metabolix kirjoitti:
Sitä voi käyttää järkeä, kun miettii, mitä osia koodista kannattaa pasteta. Sisennyksetkin olisivat paikallaan. Sanon suoraan, että minua ei ainakaan kiinnosta lukea noin sottaista koodia läpi, varsinkin, kun siitä ehkä 1% on oleellista bugin kannalta. Varmaankin twoK.Show olisi kuitenkin paikallaan, eikö?
oon koittanu, mut lisätään se ny kuiteski
Tai kokeileppa
Load twoK twoK.Show
Yleinen pikakurssi!
Load lataa objektin muistiin. Tämä ei kuitenkaan ole välttämätöntä, sillä latautuminen tapahtuu aina automaattisesti jos objektia kutsutaan tai käsitellään. Yksinkertainen esimerkki: aloita uusi projekti, lisää toinen formi ja kirjoita ykkösformiin koodirivi, joka vaihtaa form2:n otsikon. Ei mitään muuta. Sitten käynnistä projekti ja sulje form1 ruksista. Ohjelma ei sammu tähän, koska form2 on ladattu muistiin.
Tähän ongelmatapaukseen suosittelen kuitenkin debuggaamisen opettelua. Lisää epäilyttäviin kohtiin MsgBox "Kohta 1" jne., jolloin voit tutkia mikä kohta koodista suoritetaan. Tässä tapauksessa, koska Form1 sulkeutuu näkyviltä (tosin suosittelisin käyttämään Unloadia, mikäli Form1:htä ei tarvita enää toiste), on ongelma selkeästi twoK:n latauskoodissa. Siellä ensimmäisenä etsisin kaikki Do...Loopit, sillä ne aiheuttavat tällaisia "mitään ei tule näkyviin" -ongelmia Form_Loadiin sijoitettuna, jos luuppi jääkin junnaamaan loputtomiin yhtä ja samaa.
Koitappa ottaa On Error Resume Next pois.. sen jälkeen lue virheilmoitus (jos sellainen tulee)..
Nyt koitin korjata virheitä, joita tulee kun otan sen pois.
Nyt tulee virhe run-time error '-1(ffffffff)'
Miten saisin ton pois?
Millä rivillä se tulee? Jos et tiedä, lisää neuvoni mukaan noita MsgBox-rivejä muutamia, jotta voit jotenkin paikantaa virheen sijaintia. Pelkkä virheilmoitus ei kerro mitään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.