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 Sub
Kyseessä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.