AW: [CSharp.net] myString.IndexOf() unter Win2003
Wolfgang Kluge
csharp.net at glengamoi.com
Fri, 4 Jun 2004 00:02:27 +0200
Hi,
bist Du sicher, dass es da deppert, wo Du's aufgezeigt hast - oder doch =
erst
in der nächsten Zeile?? Zumindest passt die Fehlermeldung nicht zu den =
3
Zeilen Code, sondern eher zu eine Substring()-Anweisung oder =
ähnlichem..
Also. Nach diesen Zeilen
int numCustomers = numOfCustomers;
float tmpFirstNcPage = ((float)numCustomers/addrGrid.PageSize);
int commaPosition = tmpFirstNcPage.ToString().IndexOf(',');
steht in commaPosition auf Win2003 -1 statt einer Zahl > -1.
Mal abgesehen davon, dass Du vor der Verwendung einer Variable als
Startindex, diesen IMMER erstmal überprüfen solltest(*g*), hast Du =
hier ein
klassisches Regional-Einstellungs-Problem. Ich schätze, Dein
Windows2003-System ist ein Pro-Englisch-Amerikanisch Eingestelltes...
float.ToString() liefert einen String, der sich an die =
Regionseinstellungen
der Rechners richtet. Und manchmal ist das Komma "," das
Tausendertrennzeichen und der Punkt "." Dezimaltrennzeichen, mal ist es
umgekehrt. Möglich (und nicht unüblich) sind auch ganz anderes =
Zeichen.
Die Einstellungen zwischen Deutsch(Deutschland), Deutsch(Schweiz) und
Englisch(Großbritannien) könnten unterschiedlicher nicht sein.
In dem Fall gibt's wohl einfach kein Komma. Du hättest üblere Fehler =
haben
können, wenn Die Zahl entsprechend groß und das =
Tausendertrennzeichen ein
Komma "," gewesen wäre... Naja. Fakt ist, wenn er das Zeichen nicht =
findet
ist der Rückgabewert eben -1.
Statt nach einem Komma zu suchen kannst Du also nach dem eingestellten
Dezimaltrennzeichen suchen... Zu finden unter:
Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator
Wenn Du aber - wovon ich ausgehe - den Ganzahlwert der Dezimalzahl =
brauchst,
dann verwende lieber Math.Ceiling(negative Zahl) bzw. =
Math.Floor(positive
Zahl).
Gute Nacht, Wolfgang ;)
http://www.vbwelt.de/
> -----Ursprüngliche Nachricht-----
> Betreff: [CSharp.net] myString.IndexOf() unter Win2003
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi
>
> Ist doch zum gegen die Wand rennen :-(
>
> Ich habe hier auf meinem Entwicklungsrechner (Win XP SP1, .NET 1.1) =
eine
> Applikation am laufen und die funktioniert auch wunderbar. Voller =
Freude
> wollte ich das ganze jetzt auf unserem "Test-Produktivsystem" =
(Win2003,
> .NET 1.1) installieren, und siehe da - folgende Codezeile funktioniert
> hier nicht (bei mir lokal nach x-tausendfachem Nachprüfen 100% =
schon).
>
> int numCustomers = numOfCustomers;
> float tmpFirstNcPage = ((float)numCustomers/addrGrid.PageSize);
> int commaPosition = tmpFirstNcPage.ToString().IndexOf(','); //hier
> depperts!
>
> Der Fehler der erscheint:
> "startIndex darf nicht kleiner als 0 sein".
>
>
> Die Konstellationen und Abläufe bis der Fehler erscheint sind auf =
beiden
> Rechnern wirklich 100% identisch... gibts da unter Win2003 irgendwas, =
dass
> so eine banale Funktion beeinträchtigt?
>
> Gruss
> Dani