Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#15

Re: Zeichenkette Prüfen ob gültige Zahl ohne Umwandeln?

  Alt 29. Nov 2007, 14:10
Zitat von himitsu:
Delphi-Quellcode:
B := True;
For i := 1 to Length(S) do
  If not ((S[i] in ['0'..'9'])
    or ((i = 1) and (S[i] in ['+', '-']))) Then B := False;

If B Then {istZahl}
Das ist nicht so gut, da hier unter Umständen unnötig die or ((i = 1) and (S[i] in ['+', '-'])) Überprüfung gemacht wird. Die Braucht man nur einmal, aber unter Umständen wird jedes Mal überprüft ob i = 1 ist usw. Also entweder es vor der Schleife machen oder die Compilerdirektive (ich glaube) {$B-} davorstellen, so daß nicht alles verglichen wird.

Außerdem kann der Nullterminierte String nicht maximal 2^32 (bzw. erst bei 64 Bit 2^64) sein?

@Kenshin4455

Auch wenn es ein IN gäbe, glaubst du Delphi würde das per Gedankenlesen rausfinden? Es wäre dann intern ohne eigene Routine, aber eine Überprüfung würde es trotzdem geben. Und bei 4 GB wären das paar Minuten.
  Mit Zitat antworten Zitat