Du VB-Hacker

01234567890
1|426|15.09.10|00:19
...
10|1036|14.09.10|21:57
anzahl[i] = zeile.substr(zeile.find('|')+1, zeile.find('.') - 5);
Bei i von 1 bis 9 ist das 1. Pipe an der Stelle 1, der 1. Punkt an der Stelle 8 oder 9. Das hat dann zur Folge
anzahl[i] = zeile.substr(2, 3);
oder
anzahl[i] = zeile.substr(2, 4);
Bei i von 10 bis 99 ist das 1. Pipe an der Stelle 2, der 1. Punkt an der Stelle 9 oder 10. Das hat dann zur Folge
anzahl[i] = zeile.substr(3, 4);
oder
anzahl[i] = zeile.substr(3, 5);
Das heißt, du hast immer ein Zeichen zu viel, was das Pipe hinter der Zahl erklären würde.
Du kannst in find auch ein Parameter mitgeben, ab welcher Stelle er suchen soll. Etwa:
pipepos = zeile.find('|')+1;
anzahl[i] = zeile.substr(pipepos, zeile.find('|', pipepos) - pipepos);
Kannst natürlich auch ohne die Zwischenvariable machen, dann sieht's l33t3r aus

anzahl[i] = zeile.substr(zeile.find('|')+1, zeile.find('|', zeile.find('|')+1) - zeile.find('|')-1);
Ich hab's nicht getestet, aber sollte eigentlich funktionieren :p