Substrlen, index buiten bereik ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Strunkie
  • Registratie: Februari 2008
  • Laatst online: 21-10-2024

Strunkie

> Post is rechts!

Topicstarter
Mensen,

Ik heb een zeer vervelend probleem waarvan ik helemaal niks snap.
Ik laad in VB.NET een tekstbestand in en split hem vervolgens d.m.v. de volgende code:
code:
1
Dim reading = settingsString.Split(";")


Daarna gooi ik hem in een for loop:
code:
1
2
3
For Each tek As String In reading
     MsgBox(tek.Substring(tek.indexOf("="), tek.Length))
Next


Als ik in de messagebox alleen de string tek laat zien gaat het goed, op het moment dat ik hem wil knippen gaat het fout :S
Dan krijg ik de volgende error:
code:
1
2
Index en lengte moeten naar een locatie binnen de tekenreeks verwijzen.
Parameternaam: length


Terwijl de index lager is dan de length, en de length niet hoger dan de totale lengte...

De string die ik door de for loop heen gooit is als volgt:
code:
1
2
3
4
5
6
7
positie = 7.5;
contour = 20;
contour_snelheid = 120;
opslaglocatie = C:\e\f\;
bestandsnaam = ditiseentest;
punt = 1;
einde = 0;


Wie kan mij vertellen wat ik fout doe?

^ Post is hierboven!


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

*wrong*

[ Voor 95% gewijzigd door Snake op 29-08-2012 20:24 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 02-05 16:00
Lengte wordt berekend vanaf je index.

Dus als je volledige lengte 20 is en je index 10. Wil substring karakter 10 tot en met 30 pakken.

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • Strunkie
  • Registratie: Februari 2008
  • Laatst online: 21-10-2024

Strunkie

> Post is rechts!

Topicstarter
Evilbee schreef op woensdag 29 augustus 2012 @ 20:08:
Lengte wordt berekend vanaf je index.

Dus als je volledige lengte 20 is en je index 10. Wil substring karakter 10 tot en met 30 pakken.
*Facepalm :F * voor mij, ik dacht dat ik het probleem eerder was tegengekomen en nu je het zo zegt; ja dat is het probleem.

Bedankt voor het meedenken 8)

^ Post is hierboven!


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 26-04 16:12
Strunkie schreef op woensdag 29 augustus 2012 @ 20:02:
Wie kan mij vertellen wat ik fout doe?
Afgezien van 'the obvious': probeer het voormekaar te krijgen dat je errormeldingen in het engels krijgt. Als je dan daarop gaat googlen is de kans op zinnige hits een heel stuk groter.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Je maakt eerst een array dmv splitten op de puntkomma. Waarom daarna niet dat weer herhalen en splitten op het = teken. Dan heb je helemaal niks met posities en lengtes te maken.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 01-05 10:36

NMe

Quia Ego Sic Dico.

RaZ schreef op woensdag 29 augustus 2012 @ 22:53:
Je maakt eerst een array dmv splitten op de puntkomma. Waarom daarna niet dat weer herhalen en splitten op het = teken. Dan heb je helemaal niks met posities en lengtes te maken.
Sowieso krijg je met splitten op puntkomma's al gekke dingen omdat je newlinekarakter(s) dan niet verdwijnen. Splitten op de = levert op dezelfde manier een trailing en leading spatie op voor de twee resulterende strings. Los daarvan is daar inderdaad wel makkelijker op te filteren dan wanneer je substrings gaat lopen uitknippen, maar het is wel iets waar rekening mee gehouden moet worden. Trim zou beiden problemen (newlines en spaties) volgens mij op moeten lossen.

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


  • epic007
  • Registratie: Februari 2004
  • Laatst online: 24-04 18:06
En anders gebruik je gewoon deze http://msdn.microsoft.com/en-us/library/hxthx5h6.aspx#Y0, deze neemt de substring tot het einde van de string.

Let er wel op dat IndexOf('=') ook -1 als resultaat kan teruggeven (bijvoorbeeld als er een lege regel in je file staat).

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 01:54

alienfruit

the alien you never expected

Of je plakt er gewoon even een [data] voor en gebruik je deze ini file parser:
http://code.remobjects.co.../ShineOn.RTL/IniFiles.pas
Pagina: 1