Toon posts:

[VB6] EOF loopt vast in XP *

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ben er na een lange dag achter gekomen dat de door mij gemaakte Visual basic programma blijft hangen door de EOF functie, die ik gebruikt heb.
De applicatie blijft hangen op 1 XP computer en op 1 win98 computer. Dat wil zeggen dat de applicatie op andere XP computers gewoon draait.
Nu komt het waarschijnlijk omdat ik er al de hele dag mee bezig ben maar ik kom er niet meer uit. Ik ga er vanuit dat de computer waar de applicatie op draait een DLL mist. ik kom er alleen niet achter welke dat is.

Ik heb ook al via Package and Deloyment Wizard alle dll's mee genomen in de setup maar dat werkt niet. Wat zou ik nog meer kunnen proberen??

oohh ja ,heb vb6 gebruikt.

[ Voor 3% gewijzigd door Verwijderd op 19-05-2004 19:19 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:00

gorgi_19

Kruimeltjes zijn weer op :9

En wij mogen nu raden wat hier de oorzaak van is? Je geeft geen VB versie, je geeft geen code, wat kunnen we hier mee? :?

Wat je kan doen: debuggen. Onder welke conditities gaat het fout? Mis je een dll? Krijg je dan een foutmelding? Norton Script Blocking die de boel loopt te etteren?

[ Voor 41% gewijzigd door gorgi_19 op 19-05-2004 19:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Het gaat mis overal waar ik onderstaande code gebruik. Maar dit gaat allen fout op 2 specifieke machines. Verder op andere computers werkt dit prima. Het is zelfs zou dat het voorheen op die computers het prima werkte. Nu moet ik wel zeggen dat op 1 van die machines inderdaad net Norton is geinstaleerd. Maar dat lijjkt me niet de oorzaak want op de machine waar ik op ontwikkel draai ik ook norton en daar levert het geen problemen op. Tevens maak ik de setup scripts op een schoon geinstaleerde win98 computer.

code:
1
2
3
4
Do While Not Rs6.EOF
module_titel6.Text = Rs6.Fields("Titel6").Value
Rs6.MoveNext
Loop

Verwijderd

Is dit werkelijke code ? Ik vraag dit, omdat hij me nogal nutteloos lijkt, je gaat alle records af, en je zet een veld in een text-property, waarbij de vorige tekst iedere keer wordt overschreven.

Plaats eens een echt stuk code, misschien dat we daar iets aan kunnen doen.

Verder zou je met de dependency walker kunnen kijken of alle DLL's etc. die je nodig hebt wel aanwezig zijn op de client. Verder kun je ook eens controleren of je wel de goede versie van de MDAC hebt. Als je namelijk van een schone win98 een installatie maakt, kan dat wel eens een verkeerde versie zijn.

Verwijderd

Topicstarter
Verwijderd schreef op 19 mei 2004 @ 19:39:
Is dit werkelijke code ? Ik vraag dit, omdat hij me nogal nutteloos lijkt, je gaat alle records af, en je zet een veld in een text-property, waarbij de vorige tekst iedere keer wordt overschreven.

Plaats eens een echt stuk code, misschien dat we daar iets aan kunnen doen. .
Ik kan me voorstellen dat deze code een beetje raar overkomt. In deze situatie hoef ik ook geen EOF te gebruiken aangezien hier inderdaad maar 1 record aanwezig is. Dus dat ga ik nog even aanpassen.
Maar de applicatie blijft hierop hangen dat weet ik zeker. Als ik alle EOF namelijk wegkommentarieer dan werkt de app wel.
Verder zou je met de dependency walker kunnen kijken of alle DLL's etc. die je nodig hebt wel aanwezig zijn op de client. Verder kun je ook eens controleren of je wel de goede versie van de MDAC hebt. Als je namelijk van een schone win98 een installatie maakt, kan dat wel eens een verkeerde versie zijn .
Ik zet alle DLL files in de App path. Ik zal de MDAC versie nog eens nakijken maar het lijkt me sterk. Daar is namelijk niks aan veranderd.

[ Voor 12% gewijzigd door Verwijderd op 19-05-2004 19:54 ]


  • sebastius
  • Registratie: September 2000
  • Laatst online: 25-05 21:36

sebastius

Laten we lekker link gaan doen

EOF is alleen voor tekstfiles die je opent he? En dan moet je dus iets van een
code:
1
2
3
4
5
Open blah.txt for input as #1
Do while eof(1)=0
statement om regel uit #1 te lezen
loop
close #1

Zit nog wel een foutje of 3 in, maar goed, dit is het idee.

En voor databases zijn er 'lastrecord' functies.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 13:56
Als je ipv Do While / Loop de combinatie While / Wend gebruikt, krijg je dan hetzelfde probleem?

Verwijderd

Verwijderd schreef op 19 mei 2004 @ 19:30:
code:
1
2
3
4
Do While Not Rs6.EOF
module_titel6.Text = Rs6.Fields("Titel6").Value
Rs6.MoveNext
Loop
Probeer eens...
code:
1
2
3
4
Do While ((Not Rs6.BOF) and (Not Rs6.EOF))
  module_titel6.Text = Rs6.Fields("Titel6").Value
  Rs6.MoveNext
Loop


of ...
While .. Wend

[ Voor 4% gewijzigd door Verwijderd op 19-05-2004 23:04 . Reden: BOF ]


Verwijderd

Topicstarter
ddc schreef op 19 mei 2004 @ 21:59:
Als je ipv Do While / Loop de combinatie While / Wend gebruikt, krijg je dan hetzelfde probleem?
Ja ik kreeg nog steeds het zelfde probleem.
Er zijn twee dingen die ik zou kunnen doen.

alle EOF omzeilen door de records in array op te vangen, maar dat zou eigenlijk jammer zijn.
Of er achter zien te komen welke dll/ocx files er op de bewuste XP/win98 machine dwarsbomen.

Zijn er bepaalde dll's of ocx of andere files waar EOF gebruik van maakt?

Als ik de applicatie start dan zie ik bij processen de CPU oplopen naar 98/99, wacht ik vervolgens een tijdje dan loopt de app vast.

Verwijderd

Verwijderd schreef op 19 mei 2004 @ 23:25:
[...]
Als ik de applicatie start dan zie ik bij processen de CPU oplopen naar 98/99, wacht ik vervolgens een tijdje dan loopt de app vast.
Dit begint te lijken op een oneindige lus.....raar

Welke database gebruik je trouwens, en welke soort van databasetoegang ( DAO/ADO ).

En zoals ik al eerder zei, stuur eens wat meer code. Ook het openen van je connectie ( inclusief volledige connectionstring ), en het openen van je recordset ( inclusief SQL-statement ).
mpgjaltema schreef :
Of er achter zien te komen welke dll/ocx files er op de bewuste XP/win98 machine dwarsbomen.
Dat doe je dus met de dependency walker, die bij VB wordt geinstalleerd ( depends.exe ). Die kun je zo op een andere pc opstarten, en dan je executable daarin openen. Je krijgt dan te zien welke DLL/OCX bestanden je mist.
mpgjaltema schreef :
Ik zet alle DLL files in de App path.
Weet je wel zeker dat dat kan met de DLL's die je gebruikt ? sommige DLL's etc. moeten in de SYSTEM(32) directory staan. Zijn alle DLL's/OCX-en wel goed geregistreerd ?

  • Tranq
  • Registratie: Oktober 1999
  • Laatst online: 16-10-2024
En je weet ook zeker dat je je RS object niet per ongeluk destroyed in de while loop....

Dan kent ie namelijk ook geen EOF meer en blijft ie hangen in de while...

code:
1
2
3
4
5
6
while not RS.EOF
      ' Do some code maar zorg er voor dat je RS niet destroyed

      RS.MoveNext
wend
RS.CloseObject

[ Voor 33% gewijzigd door Tranq op 20-05-2004 19:58 ]

Pagina: 1