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]