Moin!
Ich habe mir dein Code mal angeguckt. An sich ganz ordentlich (wobei ich es selber hasse, wenn "Sonderzeichen" benutzt werden (außer Konstanten)

). Aber es ist dein Code also kein Ding.
Aber eine Sache zu Produkt! Im Moment sieht das so aus:
Delphi-Quellcode:
While b <> '' do Begin
For i := 1 to ZeichenZuZahl[b[Length(b)]] do Result := Summe(Result, a);
a := a + '0'; // a := Produkt(a, '10');
Delete(b, Length(b), 1); // b := Quotient(b, '10');
End;
Könnte man da nicht eine For-Schleife verwenden?
Delphi-Quellcode:
for j := Length(b) downto 1 do
begin
for i := 1 to ZeichenZuZahl[b[j]] do Result := Summe(Result, a);
a := a + '0';
end;
So fällt der Delete-Befehl weg. Und man ruft nur noch einmal "Length()" auf, statt wie jetzt 2*<Anzahl Stellen>. Außerdem ist
imho eine For-Schleife immer schneller als eine entsprechende While-Schleife.
MfG
xZise