[VB6] optellen lukt niet

Pagina: 1
Acties:
  • 38 views sinds 30-01-2008

  • JorisPenders
  • Registratie: April 2004
  • Laatst online: 10-04 22:01

JorisPenders

Designer & Coder

Topicstarter
Hallo

heb maar een hele korte vraag

Ik zit nu even iets te maken en dan moet de variable 'tijd' + 1

ik heb nu
code:
1
tijd = tijd + 1


en in m'n form_load:
code:
1
Dim tijd As Integer


Maar VB geeft een error:

code:
1
2
Runtime error (13)
Type Mismatch


Ik kom er niet uit

Joris

SystemSpecs -- WebArea - Your Online Home -- Webdesign


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 21:15

Sponge

Serious Game Developer

Waar heb je die tijd = tijd +1? ook in de form_load? of ergens anders. Als je he mergens anders hebt, zet hem dan boven alles, dan is de variabele overal te gebruiken in je form.

En komt die fout echt op die tijd regel?

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 20:39

Exterazzo

Qeasy

Als je van
code:
1
Dim tijd As Integer

nou
code:
1
Public tijd As Integer

maakt en dat helemaal boven in je code zet (buiten een procedure of functie) dan zou het moeten werken.

Audentia


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Sla er eens een helpfile of boek op na zou ik zeggen, je zult het nodig hebben.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

/edit: oh zo... lees Exterazzo's post maar...

[ Voor 72% gewijzigd door Verwijderd op 04-09-2004 20:18 . Reden: oeps ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Uhm, ik ken VB niet persoonlijk, maar een variabele gebruiken voordat je em ooit een waarde gegeven hebt, is niet bepaald slim...

日本!🎌


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

farlane schreef op 04 september 2004 @ 20:06:
Sla er eens een helpfile of boek op na zou ik zeggen, je zult het nodig hebben.
Misschien handig om het zoekwoord "scope" daarbij te geven. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Mizitras
  • Registratie: September 2002
  • Niet online
1) Welke waarde heeft tijd op dat moment ?
2) Waar heb je hem gedefiniëerd ?
3) Ken je globaal variabelen ?

4) Post anders je gehele code eens, met zo'n [code'] blablabladimpublicVBstuff [/code'] maar zonder het ' dan.

code:
1
Dan ziet dat er dus zo uit ;-)

"the fucking alpha cpp compiler seems to fuck up the goddam type "LPITEMIDLIST", so to work around the fucking peice of shit compiler we pass the last param as an void *instead of a LPITEMIDLIST"


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 21:15

Sponge

Serious Game Developer

Exterazzo schreef op 04 september 2004 @ 10:11:
Als je van
code:
1
Dim tijd As Integer

nou
code:
1
Public tijd As Integer

maakt en dat helemaal boven in je code zet (buiten een procedure of functie) dan zou het moeten werken.
Dim werkt bovenaan ook gewoon wel hoor ;). Public heeft geen nut als het binnen de form blijft...

Verwijderd

Sponge schreef op 04 september 2004 @ 10:06:
Waar heb je die tijd = tijd +1? ook in de form_load? of ergens anders. Als je he mergens anders hebt, zet hem dan boven alles, dan is de variabele overal te gebruiken in je form.

En komt die fout echt op die tijd regel?
Mijn idee ook, met nog wat uitleg.
Variabelen gedefinieerd in een procedure zijn daarbuiten niet bruikbaar. Als een variabele in meerdere procedures (methodes) benaderbaar moet zijn, kan je er een (member)variabele van je formulier-klasse van maken.
In VB doe je dit door bij de globals van het formulier (het gedeelte tussen option
explicit en de eerste procedure) een private variabele te definieren:
-------------
option explicit

private tijd as integer

private sub Form_Load()
tijd = 0
end sub

private sub MijnSubje()
tijd = tijd +1
end sub

Verwijderd

De fout zit em dus waarschijnlijk in dat die variabele op een lege string wordt geinitialiseerd en daar kun je dus geen getallen mee optellen.

Initialiseer even op tijd = 0 of wat je ook maar moet hebben en kijk dan nog 's.

Verwijderd

Gebruik je option explicit ? Wees een vriend van jezelf, doe het WEL.

Als je twijfelt aan declaraties van variabelen kan je de volgende trucs gebruiken:
- klik in het pop-menu bij rechts-klikken op een variabele "goto definition"
- via menu "project" of "build": kies "build all" en kijk waar het schip strand

[ Voor 9% gewijzigd door Verwijderd op 04-09-2004 23:37 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Verwijderd schreef op 04 september 2004 @ 22:49:
De fout zit em dus waarschijnlijk in dat die variabele op een lege string wordt geinitialiseerd en daar kun je dus geen getallen mee optellen.

Initialiseer even op tijd = 0 of wat je ook maar moet hebben en kijk dan nog 's.
Die meneer vertelt duidelijk dattie zijn variabele declareert in form_load. Buiten form_load heb je er dus niets aan.

En 'scope' is idd het woord waarop gezocht moet worden. Misschien is het ook verstandig om het gedeelte over modules en classes/forms/objecten een wat nader te bestuderen. :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • JorisPenders
  • Registratie: April 2004
  • Laatst online: 10-04 22:01

JorisPenders

Designer & Coder

Topicstarter
Heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Command1_Click()
Timer1.Enabled = True
tijd.Caption = ""
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False

End Sub

Private Sub Form_Load()
Dim tijd
tijd = 0
End Sub

Private Sub Timer1_Timer()

If tijdbox.Text = tijd Then
Form2.Show
Timer1.Enabled = False
tijd.Caption = "Eindigd"
Else
tijd = tijd + 1
tijd.Caption = tijd
End If

End Sub


Als ik de Dim Tijd weglaat of Dim Tijd As Integer doet ie het ook niet
geeft steeds fout op de regel:

code:
1
tijd = tijd + 1


Type Mismatch geeft ie dus

Joris

SystemSpecs -- WebArea - Your Online Home -- Webdesign


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

DJ_Jorizzz schreef op 06 september 2004 @ 13:54:
Heb nu dit:
code:
1
2
3
4
Private Sub Form_Load()
Dim tijd
tijd = 0
End Sub

Als ik de Dim Tijd weglaat of Dim Tijd As Integer doet ie het ook niet
geeft steeds fout op de regel:
Zoals Farlane ook al zegt, je probleem is de scope van de variabele tijd. Zoals mensen je al eerder hebben verteld moet je tijd niet declareren in je Form_Load routine maar boven in de module als een globale variabele.

In de post van Bloog kun je precies zien hoe je je probleem moet oplossen.
Visual Basic:
1
2
3
4
5
6
7
8
9
Option Explicit

Private tijd As Integer

[etc] 

Private Sub Form_Load()
  tijd = 0
End Sub


PS: Misschien ook wel een aardig idee om eens wat in te springen in je code. Komt de leesbaarheid een hoop ten goede!

[ Voor 10% gewijzigd door Lorn op 06-09-2004 14:33 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Beste Joris, heb je de posts gelezen die boven deze staan, en gezocht op de steekwoorden die je aangereikt staan ?

Als je wilt leren met VB ( of elke andere taal for that matter ) moet je bij het begin beginnen. ( De introduction pagina van de help file dus ( *kuch*[F1] *kuch* )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

En dan nog iets: je hebt een control (een label) met de naam tijd en een variabele met de naam tijd. Je code wil aan het label een waarde +1 geven en dat werkt niet.
Wenk van Henk: noem je label lblTijd en je variabele varTijd. En declareer dan je variabele op de juiste plaats.
code:
1
2
tijd = tijd + 1
tijd.Caption = tijd

Getver!

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Dit topic schiet op deze manier niet op. Er is al gezegd dat er scope problemen kunnen ontstaan (als je in doos A een tekening definieert, kan je deze in doos B niet inkleuren")

Verder komen er nogal wat ranzigheden naar voren met je naamgeving. Als iets een appel is, moet je er opeens een banaan van maken en dan vragen aan de banaan naar de appelprijs :) Dat gaat niet goed. :) Een label is een label en die moet je niet als integer / double gaan aanspreken.

Anyway, met deze hints (en natuurlijk de eerder genoemde postings) moet je er verder wel uit kunnen komen. :) Sowieso is een boek over VB6 icm een artikel over consistente naamgeving aan te raden :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.