Toon posts:

[VB6] Foutmelding bij veel declaraties *

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

Verwijderd

Topicstarter
Hoi tweakers,

Ik schrijf een programma die het aantal bouten berekent van een serre met een aantal in gevoerde gegevens.
Alles werkte goed, maar ik dacht, ik zou beter m'n module structureren waar de formules worden uitgewerkt. Dit heb ik gedaan en de variabelen beter verdeeld.
Het declaren ervan zie je hieronder

Option Explicit

Public cat2, cat3, cat4, cat5, cat6, cat7, cat8, cat9, cat10 As String
Public cat11, cat12, cat13, cat14, cat15, cat16, cat17, cat18, cat20 As String
Public cat41, cat42, cat43, cat44, cat45, cat46, cat47, cat48, cat49, cat50 As String
Public cat51, cat52, cat53, cat54, cat55, cat56, cat57, cat58, cat60 As String
Public cat61, cat62, cat63, cat64, cat65, cat66, cat67, cat68, cat69, cat70 As String
Public cat71, cat72, cat73, cat74, cat75, cat76, cat77, cat78, cat79, cat80 As String
Public cat81, cat82, cat83, cat84, cat85, cat86, cat87, cat88, cat89, cat90 As String
Public cat59 As String
Public cat As String
Public cat21 As String
Public cat30, cat31, cat32, cat33, cat34, cat35, cat36, cat37 As String
Public cat38, cat39 As String
Public cat40 As String

Nu alles komt overeen, niets dubbel ingevuld, en in de formules zitten ook geen fouten. Toch geeft hij een foutmelding: Runtime error '13' Type mismatch

Zou het kunnen liggen om dat ik teveel Public As String gebruikt heb? Het is maar een wilde gok. Weet iemand raad?

Hij heeft de foutmelding vanaf cat60, waneer ik formule 60 verwijder. Heeft hij terug een foutmelding bij cat61 enz...
Groeten

[ Voor 5% gewijzigd door Verwijderd op 31-01-2004 16:31 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Niet direct een antwoord op je vraag maar kun je niet beter een Array gebruiken?

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Wat is een Array? Sorry werk nog niet lang met VB6

Verwijderd

Topicstarter
Verwijderd schreef op 31 januari 2004 @ 16:32:
Wat is een Array? Sorry werk nog niet lang met VB6. Hij heeft de foutmelding vanaf cat60, waneer ik formule 60 verwijder. Heeft hij terug een foutmelding bij cat61 enz...

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Volgens mij heb jij nog nooit gehoord van arrays of wel? ;)
Je kan al die variabelen vervangen door 1 array declaratie:
Visual Basic:
1
Public Cat(40) As String

En zonder relevante code die de type mismatch zou veroorzaken kunnen we je ook niet helpen.

Daarbij bij een declaratie als:
Visual Basic:
1
Public cat2, cat3, cat4, cat5, cat6, cat7, cat8, cat9, cat10 As String 

Is alleen cat10 een String en zien cat2-cat9 Variants.

De correcte declaratie:
Visual Basic:
1
Public cat2 As String, cat3 As String, cat4 As String etc.

Maar zoals al verteld is dit is niet echt een bepaald efficiënt gebruik van variabelen. Kijk anders eens op deze site http://www.vbtutor.net

[ Voor 46% gewijzigd door pjonk op 31-01-2004 16:39 ]

It’s nice to be important but it’s more important to be nice


Verwijderd

Topicstarter
Nee, heb nog nooit van een Array gehoord
Wat doe je dan als je Public cat(40) As string gebruikt
Zal hij dan alle cat's declareren tot cat40?

Nuja, de code is te lang om te geven. Zijn enkel formules ( een 100-tal ) die berekeningen uitvoert. Het heeft altijd gewerkt, maar vanaf ik ze ging structureren ging het niet meer

[ Voor 41% gewijzigd door Verwijderd op 31-01-2004 16:38 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op 31 januari 2004 @ 16:36:
Nee, heb nog nooit van een Array gehoord
Wat doe je dan als je Public cat(40) As string gebruikt
Zal hij dan alle cat's declareren tot cat40?
ja :)


Je kunt ze dan bijvoorbeeld nr 21 benaderen door cat(20) te gebuiken. (een array begint altijd bij 0)

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Ok zal effen proberen

Het lukt blijkbaar nog niet, nu heeft hij een fout in het formulier waar de uitkomst van een formule komt.
Code:

Private Sub Command1_Click()
Call berekenen
Btn_Gord_M8_20.Text = cat
Btn_Kr_M8_20.Text = cat21
St_Besam_Deur.Text = cat31
Brg_Autm_Besamd.Text = cat30
Deursts_Besamd.Text = cat30
Type_Brg_Skt.Text = cat33
Brg_Skt_Port.Text = cat32
Deursts_Skt_Deur.Text = cat32
Type_Brg_Autm.Text = cat35
Brg_Autm_Deur.Text = cat34
Deursts_Autm_Deur.Text = cat34
Br_Brg_Ond_Gt.Text = cat37
Br_Ond_Gt.Text = cat36
Gbst.Text = cat38
Mbrgn.Text = cat39
Portkn.Text = cat40
End Sub

Foutmelding: Type Mismatch
Foutmelding geef hij bij cat.

[ Voor 97% gewijzigd door Verwijderd op 31-01-2004 16:46 ]


Verwijderd

Topicstarter
Heb ook eens Public cat(0 to 100) As string geprobeerd, maar dit heeft hetzelfde uitwerking, niet? nuja, geeft nog altijd een foutmelding

Code module:

Option Explicit
Public cat(0 To 100) As String

Sub berekenen()
'gordingen in NeZe_Mdgvl

cat2 = (NeZe_Mdgvl.Aant_Rijn_Gordn_Ond_Gt * (NeZe_Mdgvl.Aant_Gvlsts_Gls4 - 1) * 2) * NeZe_Mdgvl.Aant_Mdgvls_Gls4 'aantal bouten gordingen in middengevel van glas 4

'hierbij komen nog een 100-tal formules bij
End sub

Code formulier:

Private Sub Command1_Click()
Call berekenen
Btn_Gord_M8_20.Text = cat 'hier heeft hij een foutmelding
Btn_Kr_M8_20.Text = cat21
St_Besam_Deur.Text = cat31
Brg_Autm_Besamd.Text = cat30
Deursts_Besamd.Text = cat30
Type_Brg_Skt.Text = cat33
Brg_Skt_Port.Text = cat32
Deursts_Skt_Deur.Text = cat32
End Sub


bij Btn_Gord_M8_20.Text = cat heeft hij een foutmelding (type mismatch)

Groeten

[ Voor 74% gewijzigd door Verwijderd op 31-01-2004 16:55 ]


  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 14-05 21:53
P_de_B schreef op 31 januari 2004 @ 16:37:
[...]

ja :)

Je kunt ze dan bijvoorbeeld nr 21 benaderen door cat(20) te gebuiken. (een array begint altijd bij 0)
Dit is alleen waar als Option Base 0 gebruikt wordt. Anders begint de array bij 1.

TS: gebruik niet Cat20, maar Cat(20) als je een van de elementen van het array wilt gebruiken.

Ik zou je echter aanraden eerst wat informatie op te zoeken over VB en programmeren in het algemeen.

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
P_de_B schreef op 31 januari 2004 @ 16:37:
[...]


ja :)


Je kunt ze dan bijvoorbeeld nr 21 benaderen door cat(20) te gebuiken. (een array begint altijd bij 0)
Ik neem aan dat je het over Visual basic hebt hier, en niet over array's in het algemeen ;) Je hebt namelijk ook bijvoorbeel assoctieve arrays (OA in php) en in delphi kun je ook array's van 5 t/m 10 hebben :)

Verwijderd

Topicstarter
Wanneer je een array gebruikt in een module. Vb: Public cat(0 to30) As String

Is het dan mogelijk dat hij vb cat21 kan terug vinden in de module, en deze dan plaatsen in een formulier. Omdat hij dan een foutmelding geeft. Wanneer ik elke variabele apart uitschrijf vb cat0 As string, cat1 As string, .... Geeft hij geen foutmelding.

En wanneer je Public cat (0 to 30) As string gebruikt, ben je dan verplicht om elke cat te gebruiken???

[ Voor 14% gewijzigd door Verwijderd op 31-01-2004 17:26 ]


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Verwijderd schreef op 31 januari 2004 @ 17:24:
Wanneer je een array gebruikt in een module. Vb: Public cat(0 to 30) As String

Is het dan mogelijk dat hij vb cat21 kan terug vinden in de module, en deze dan plaatsen in een formulier. Omdat hij dan een foutmelding geeft. Wanneer ik elke variabele apart uitschrijf vb cat0 As string, cat1 As string, .... Geeft hij geen foutmelding.

En wanneer je Public cat (0 to 30) As string gebruikt, ben je dan verplicht om elke cat te gebruiken???
Nee, maar het is wel zode van het geheugen ;) daar hebben ze dan weer dynamische array's voor bedacht, (bekendheids factor 0,1 bij mij, in visual basic ;))

En welke foutmelding geeft 'ie dan? -hier gaat het namelijk gewoon goed-

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
PrisonerOfPain schreef op 31 januari 2004 @ 17:14:
[...]
Ik neem aan dat je het over Visual basic hebt hier, en niet over array's in het algemeen ;)
Ja inderdaad, VB. En ook bij VB kan dit nog weer anders als je OPTION BASE n gebruikt, maar ik denk dat dat een sprong te ver is voor TS op dit moment.

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Foutmelding: Type mismatch

Deze geeft hij aan in het formulier waar een cat uit de module wordt gebruikt.


Private Sub Command1_Click()
Call berekenen
Btn_Kr_M8_20.Text = cat21 'hier heeft hij een fout
End Sub

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:01

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 31 januari 2004 @ 17:35:
Foutmelding: Type mismatch

Deze geeft hij aan in het formulier waar een cat uit de module wordt gebruikt.


Private Sub Command1_Click()
Call berekenen
Btn_Kr_M8_20.Text = cat21 'hier heeft hij een fout
End Sub
* gorgi_19 kan de code niet in verband brengen met alle opmerkingen over arrays? :?
Visual Basic 6:
1
2
3
4
Private Sub Command1_Click()
Call berekenen
Btn_Kr_M8_20.Text = cat(19)      'hier heeft hij een fout
End Sub

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
PrisonerOfPain schreef op 31 januari 2004 @ 17:30:
[...]

Nee, maar het is wel zode van het geheugen ;) daar hebben ze dan weer dynamische array's voor bedacht, (bekendheids factor 0,1 bij mij, in visual basic ;))

En welke foutmelding geeft 'ie dan? -hier gaat het namelijk gewoon goed-
Foutmelding: Type mismatch

Deze geeft hij aan in het formulier waar een cat uit de module wordt gebruikt.


Private Sub Command1_Click()
Call berekenen
Btn_Kr_M8_20.Text = cat21 'hier heeft hij een fout
End Sub

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Verwijderd schreef op 31 januari 2004 @ 17:35:
Foutmelding: Type mismatch

Deze geeft hij aan in het formulier waar een cat uit de module wordt gebruikt.


Private Sub Command1_Click()
Call berekenen
Btn_Kr_M8_20.Text = cat21 'hier heeft hij een fout
End Sub
Als je een array declareerd heten alle variabele cat, de identifier/index staat tussen ( en ) dus cat(21) geeft je hier het juiste item :)

Verwijderd

Topicstarter
PrisonerOfPain schreef op 31 januari 2004 @ 17:40:
[...]


Als je een array declareerd heten alle variabele cat, de identifier/index staat tussen ( en ) dus cat(21) geeft je hier het juiste item :)
Thx, dit antwoord zocht ik, nu werkt het eindelijk, na twee uur zoeken ;-)
Nuja, da's het leuke aan het programmeren, dat je het na lang zoeken vind, en dat het werkt. Hartelijk Dank tweakers

Verwijderd

Topicstarter
thx

[ Voor 99% gewijzigd door Verwijderd op 31-01-2004 18:04 ]


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Geef eens wat code er om heen, want bij mij gaat het goed (wel wat langzaam) tot de 10000000 (hoger heb ik niet geteste :))

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 27-05 19:32

Gerco

Professional Newbie

Geef eens de declaratie van cat() en de regel waarop de fout optreed? Waarschijnlijk probeer je een string in een integer te stoppen oid.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Gerco schreef op 31 januari 2004 @ 18:07:
Geef eens de declaratie van cat() en de regel waarop de fout optreed? Waarschijnlijk probeer je een string in een integer te stoppen oid.
Geen probleem heb het probleem opgelost. Ik had in het formulier verwezen naar cat21 maar het moest cat(21) zijn. Toch bedankt

Verwijderd

Topicstarter
PrisonerOfPain schreef op 31 januari 2004 @ 18:07:
Geef eens wat code er om heen, want bij mij gaat het goed (wel wat langzaam) tot de 10000000 (hoger heb ik niet geteste :))
Geen probleem heb het probleem opgelost. Ik had in het formulier verwezen naar cat21 maar het moest cat(21) zijn. Toch bedankt
Pagina: 1