Was sind Zahlen?
z.B. inklusive Vorzeichen, Komma, Tausenderseparator und womöglich noch mit Exponent.
TStringArray ... falls es im D7 das schon gibt, dann besser
TStringDynArray verwenden, für eine bessere Typkompatibilität.
@angos: Wenn AString mit einer Zahl endet, dann wird diese vergessen.
Also nach der Schleife dieses besser nochmals beachten.
Delphi-Quellcode:
if sHelp <> '' then
begin
SetLength(AStrArray, Length(AStrArray)+1);
AStrArray[High(AStrArray)] := sHelp;
end;
Mit Vorzeichen:
Delphi-Quellcode:
function GetNums(const Text: string): TIntegerDynArray;
var
L, i: Integer;
begin
SetLength(Result, 1);
Result[0] := '';
L := 0;
for i := 1 to Length(Text) do
if (Text[i] in ['0'..'9']) or ((Result[L] = '') and (Text[i] in ['+', '-'])
and (i < Length(Text)) and (Text[i + 1] in ['0'..'9'])) then
Insert(Text[i], Result[L], Length(Result[L]) + 1) // Result[L] := Result[L] + Text[i]
else if Result[L] <> '' then begin
Inc(L);
SetLength(Result, L + 1);
end;
if Result[L] = '' then
SetLength(Result, L);
end;
// ab D2006/TDE
function GetNums(const Text: string): TIntegerDynArray;
var
C, V: Char;
L: Integer;
begin
SetLength(Result, 1);
Result[0] := '';
L := 0;
V := #0;
for C in Text do begin
if C in ['0'..'9'] then begin
if V in ['+', '-'] then
Result[L] := V;
Insert(C, Result[L], Length(Result[L]) + 1);
end else if Result[L] <> '' then begin
Inc(L);
SetLength(Result, L + 1);
end;
V := C;
end;
if Result[L] = '' then
SetLength(Result, L);
end;
ohne Vorzeichen
Delphi-Quellcode:
function GetNums(const Text: string): TIntegerDynArray;
var
L, i: Integer;
begin
SetLength(Result, 1);
Result[0] := '';
L := 0;
for i := 1 to Length(Text) do
if Text[i] in ['0'..'9'] then
Insert(Text[i], Result[L], Length(Result[L]) + 1)
else if Result[L] <> '' then begin
Inc(L);
SetLength(Result, L + 1);
end;
if Result[L] = '' then
SetLength(Result, L);
end;
// ab D2006/TDE
function GetNums(const Text: string): TIntegerDynArray;
var
C: Char;
L: Integer;
begin
SetLength(Result, 1);
Result[0] := '';
L := 0;
for C in Text do
if C in ['0'..'9'] then
Insert(C, Result[L], Length(Result[L]) + 1)
else if Result[L] <> '' then begin
Inc(L);
SetLength(Result, L + 1);
end;
if Result[L] = '' then
SetLength(Result, L);
end;