Thema: Delphi Zahl im String erhöhen

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Zahl im String erhöhen

  Alt 27. Feb 2006, 17:14
Ich habe in letzter Zeit wahrlich abenteuerliche Code-Beispiele dafüe gesehen, daher hier eine kurze und einfach Variante...

Es geht darum, eine Zahl, die ganz vorne in einem String steht zu erhöhen.

Beispiel:
'27 Liter' um 13 erhöhen ergäbe dann '40 Liter'

Delphi-Quellcode:
function IncLeadingNumInStr(S: String; IncBy: Integer): String;
var Buf: String;
begin
  Buf:='';
  while S[1] in ['0'..'9'] do
    begin
    Buf:=Buf+S[1];
    Delete(S,1,1);
    if Length(S)=0 then Break;
    end;
  if Buf='then Buf:='0';
  Result:=IntToStr(StrToInt(Buf)+IncBy)+S;
end;
Das einzige was dazu gebraucht wird sind die SysUtils (StrToInt/IntToStr)...

himitsu hat diese, optimierte, Version vorgeschlagen:
Delphi-Quellcode:
function IncLeadingNumInStr(S: String; IncBy: Integer): String;
var i: Integer;
begin
  i:=0;
  while (i < Length(S)) and (S[i + 1] in ['0'..'9']) do
    inc(i);
  Result := IntToStr(StrToIntDef(Copy(S, 1, i),0) + IncBy)
            + Copy(S, i + 1, MaxInt);
end;
[edit=Chakotay1308]himitsu's Code hinzugefügt. Mfg, Chakotay1308[/edit]
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat