Miten kannattaisi lähteä selvittämään virheen alkuperää, kun ohjelma antaa virheilmoituksen:
Run-time error '9' Subscript out of range
käynnistettäessä toisessa koneessa. Omassa koneessa ohjelma toimii hyvin.
Toisessa koneessa ei ole VB6:ta.
Sinis kirjoitti:
Miten kannattaisi lähteä selvittämään virheen alkuperää, kun ohjelma antaa virheilmoituksen
Tutkimalla koodia.
Arvauksia mahdollisista syistä:
1) 16-bittiseen muuttujaan tungetaan 32-bittinen luku joka vaihtelee koneittain ja sattuu olemaan "toimivassa koneessa" sopivan pieni.
2) Ohjelmassa kasvatetaan lukua joka nollataan tietyin välein (tai lasketaan tietty aika) ja "toimimaton kone" on liian nopea ja luku kasvaa liian suureksi muuttujaan.
No, vaihtoehtoja on varmasti vaikka kuinka paljon enemmän. Jos vikaa ei helposti löydy, niin kannattaa lisätä sinne virheenkäsittelijä ja lisätä vaikka rivinumeroita niin sitten erl:istä voi ottaa ja näyttää millä rivillä virhe tapahtui.
Virhe tarkoittaa, että ohjelmassa viitataan taulukon rajojen ulkopuolelle. Tutki ohjelman kohtia, joissa käsitellään taulukkoa, ja mieti, voiko indeksiksi tulla jossakin tilanteessa väärä arvo.
Virheen sattuessa voi myös viedä kursorin indeksin (tai minkä tahansa muun muuttujan) päälle ja tarkistaa sen arvon. Näin virheen syy voi olla helpompi selvittää.
Tuli näköjään oikosulku ja edellisessä kommentissani olevat arvaukset mahdollisista syistä liittyivät virheilmoitukseen 6: Overflow, vaikka oikea oli tuo 9: Subscript out of range.
Mutta joka tapauksessa diagnosointiin voi käyttää myös edellisessä viestissäni ehdottamia keinoja.
Moikka Sinis!
Kokeile pukata omalle koneelles tämä:
Service Pack 6 for Visual Basic 6.0: Run-Time Redistribution Pack (vbrun60sp6.exe) imppaa täältä ja käännä projekti uudestaan. Jos ei auta niin kokeile asentaa sama Service Pack myös siihen toiseen koneeseen.
EDIT: Onko ohjelmallasi mahdollisesti tekemistä esim. Access tietokannan kanssa? Jos on niin siitä toisesta koneesta pitää löytyä vastaavaa versiota oleva JET-moottori. Sit jos ei vielä ole asennettuna niin asentele koneelles Microsoft Service Pack 5 ja 6 for Visual Basic 6.0 imppaa täältä ja täältä Jos SP6 ei ole asennettuna niin JET-moottorin versio on 3.5 Kun SP6 on asennettuna niin sekä JET- 3.5 että 4.0 on tuettuna. Tämän kaiken lisäksi myös Microsoft Data Access Components MDAC-paketti olis hyvä löytyä imppaa täältä
Aihe on jo aika vanha, joten et voi enää vastata siihen.