Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB6] Run-Time Error '13'

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

  • Saven
  • Registratie: December 2006
  • Laatst online: 16:58

Saven

Administrator

Topicstarter
Hallo,
Ik had Visual Basic 6 weer eens uit de kast gepakt, beetje experimenteren met winsock (voor chat enzo), maar met de server loop ik tegen een probleem aan. Als ik iets aan mijn list wil toevoegen, krijg ik de error: Run-Time Error '13' Type Mismatch
Afbeeldingslocatie: http://www.imgdumper.com/file/img/2007/oct/19/img/ctan11hbkqf1b3xl0gdg30as5.jpg

Van google werd ik helaas niet veel wijzer.

Het gaat om dit stuk code:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
        '---------------------------------------------------------
        ' Username ophalen en username+ip als listdata zetten
        '---------------------------------------------------------
        If alles(2) = "USR" Then
            
            Dim usr As String, ip As String
            usr = alles(3)
            ip = Socket(Index).RemoteHostIP
            
            lstClients.ItemData(lstClients.ListCount - 1) = usr & "|" & ip
            Exit Sub
            
        End If

Als ik op debug klik, wordt de volgende regel gehighlight:
Visual Basic:
1
lstClients.ItemData(lstClients.ListCount - 1) = usr & "|" & ip


Zou iemand mij misschien kunnen helpen? Ik heb veel gezocht maar helaas geen oplossing gevonden.
Alvast bedankt.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

ik denk dat (lstClients.ListCount - 1) ook daadwerkelijk -1 oplevert. Ik denk dat de lijst namelijk leeg is. En item met index -1 bestaat niet en daarom kun je ook geen waarde toewijzen. Maar heeft de lijst geen Add methode om een item toe te voegen?

If it isn't broken, fix it until it is..


  • Saven
  • Registratie: December 2006
  • Laatst online: 16:58

Saven

Administrator

Topicstarter
Sorry ik was niet helemaal duidelijk met het toevoegen. Het toevoegen van een item gaat wel, maar ik wil een item wat data meegeven. En dat lukt dus niet.

@Niemand_Anders:
Nope, daar had ik al naar gekeken. Ik ben er achter gekomen dat itemData alleen integers accepteert.
Is er geen andere manier dan?

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Mag ik vragen waarom je het in VB6 schrijft? Visual Studio Express 2005 (VB/C#) is gratis te downloaden en dan kun je gebruik maken van het .NET platform. .NET heeft ten eerste betere foutmeldingen en daarnaast heeft .NET ook een erg grote user base, waardoor je sneller oplossingen zult krijgen bij problemen.

Met de TcpClient en TcpListener classes kun je zeer eenvoudig client/server applicaties schrijven.

If it isn't broken, fix it until it is..


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Nope, daar had ik al naar gekeken. Ik ben er achter gekomen dat itemData alleen integers accepteert.
Is er geen andere manier dan?
Je zou een class kunnen schrijven met properties username, ip, etc. Deze class zou je kunnen bewaren in een array en de betreffende index opslaan in ItemData.

If it isn't broken, fix it until it is..


  • Saven
  • Registratie: December 2006
  • Laatst online: 16:58

Saven

Administrator

Topicstarter
Niemand_Anders schreef op vrijdag 19 oktober 2007 @ 13:41:
Mag ik vragen waarom je het in VB6 schrijft? Visual Studio Express 2005 (VB/C#) is gratis te downloaden en dan kun je gebruik maken van het .NET platform. .NET heeft ten eerste betere foutmeldingen en daarnaast heeft .NET ook een erg grote user base, waardoor je sneller oplossingen zult krijgen bij problemen.

Met de TcpClient en TcpListener classes kun je zeer eenvoudig client/server applicaties schrijven.
vb6 ben ik niet zo'n held mee, laat staan vb.net :P

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:17
Niemand_Anders schreef op vrijdag 19 oktober 2007 @ 13:41:
.NET heeft ten eerste betere foutmeldingen en daarnaast heeft .NET ook een erg grote user base, waardoor je sneller oplossingen zult krijgen bij problemen.
Wat wil je nog duidelijker aan deze foutmelding dan? Het type van een variablele klopt niet dat lijkt me zo duidelijk als maar kan.

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.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Precies, 'type mismatch' is gewoon helder. Het is ook een van de meest voorkomende meldingen (als je tenminste option strict aan hebt) en dus verplichte kost.

{signature}


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:45

TeeDee

CQB 241

Saven schreef op vrijdag 19 oktober 2007 @ 13:47:
[...]
vb6 ben ik niet zo'n held mee, laat staan vb.net :P
Waar ben je dan wel een held in?

Als je meer richting PHP zit, en je wil een .Net applicatie maken, zou je beter met C# kunnen beginnen. Syntactisch gezien lijkt dat een beetje op PHP. (N.b.: alleen de syntax dus, voor de rest is het een gevalletje appels en peren)

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Saven
  • Registratie: December 2006
  • Laatst online: 16:58

Saven

Administrator

Topicstarter
TeeDee schreef op vrijdag 19 oktober 2007 @ 14:51:
[...]

Waar ben je dan wel een held in?

Als je meer richting PHP zit, en je wil een .Net applicatie maken, zou je beter met C# kunnen beginnen. Syntactisch gezien lijkt dat een beetje op PHP. (N.b.: alleen de syntax dus, voor de rest is het een gevalletje appels en peren)
Ja, met C# ben ik ook bezig :)

Bedankt voor de antwoorden iig iedereen :)

[ Voor 5% gewijzigd door Saven op 19-10-2007 15:11 ]


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Voutloos schreef op vrijdag 19 oktober 2007 @ 14:40:
Precies, 'type mismatch' is gewoon helder. Het is ook een van de meest voorkomende meldingen (als je tenminste option strict aan hebt) en dus verplichte kost.
Daar ben ik het dus absoluut niet mee eens. Je weet niet op welke regel de foutmelding optreed, op welk object. Je moet daarvoor echt op 'debug' klikken. Daarnaast is er ook geen stacktrace aanwezig. De debuging mogelijkheden van VB6 is daarnaast ook nog vrij beperkt, zeker als je ze vergelijkt met een Visual Studio 2005.

Mijn laatste VB6 project moet ergens uit 1997/1998 zijn geweest. Daarna heb ik veel applicaties in Delphi, C(++), Java en C# geschreven. VB6 heeft van al deze talen echt de slechte fout meldingen.

Wel ben ik het met je eens dat option strict standaard aan hoort te staan.

[ Voor 3% gewijzigd door Niemand_Anders op 19-10-2007 16:45 ]

If it isn't broken, fix it until it is..


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Wijzigen moet je het toch wel, dus kan je net zo goed op debug klikken en meteen in de editor op de goede plek terecht komen. En types achterhalen / vars te inspecteren is het enige dat je hoeft te doen en dat kon zelfs in VB6 al prima.

Maar dan nog, als het een nieuw programma is, moet je VB6 links laten liggen, want het is al een paar jaar dood.

[ Voor 19% gewijzigd door Voutloos op 19-10-2007 16:51 ]

{signature}

Pagina: 1