Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Werden weitere Bedingungen geprüft wenn das Ergebnis..

  Alt 25. Feb 2006, 16:07
...schon klar ist?

In Delphi hatte ich folgende Funktion:

Delphi-Quellcode:
function TTokenizer.NumTok(const S: string): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(S) do
    if (S[I] <> C) and ((I = 1) or (S[I-1] = C)) then
      Inc(Result);
end;
Sie kann _niemals_ einen Fehler verursachen indem "S[I-1]" kleiner ist als 1, bedingt durch die vorigen Bedingungen.

Ich habe mir den Code nun in C# umgeschrieben:

Code:
        public static int NumTok(string S, char C)
        {
            int Count = 0;

            for(int i = 0; i <= S.Length; i++)
                if(((S[i] != C) && (i == 1)) || (S[i-1] == C))
                    Count++;

            return Count;

        }

Nun bekomm ich ich beim aufruf von:

Code:
textBox1.Text = Tokenizer.NumTok("blubb.jo", '.').ToString();
den Fehler:

Zitat:
Unhandled exception at @($0,$0,$0). Exception class System.IndexOutOfRangeException with message 'Der Index war außerhalb des Arraybereichs.'. Process Project3.exe (90044)
Der Fehler kann nur dadurch kommen, dass weitere Bedingungen auch geprüft werden, wenn das Ergebnis auf jeden Fall schon 100% klar ist. Ist dies so in C#?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat