Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Ohjelma ei toimi toisessa koneessa

Sinis [26.07.2007 09:13:58]

#

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.

Grez [26.07.2007 10:25:14]

#

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.

Antti Laaksonen [26.07.2007 11:53:22]

#

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.

hunajavohveli [26.07.2007 12:52:46]

#

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

Grez [26.07.2007 19:18:02]

#

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.

neau33 [26.07.2007 19:41:03]

#

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ä

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta