AW: Frage zum Substring in Delphi
10. Dez 2013, 18:30
Das mit den einzelnen Funktionen sehe ich genauso. Ungetesteter Vorschlag:
Delphi-Quellcode:
function ValidNumber(const s: string; out IntVal: integer): Boolean;
begin
Result := (Length(s) = 8) and TryStrToInt(s, IntVal);
if Result then
Result := IntVal > 0;
end;
function CharToIntValue(c: char; DoubleValue: Boolean): integer;
begin
Result := StrToInt(c);
if DoubleValue then
begin
Result := Result * 2;
if Result > 9 then
Result := Result mod 10 + 1;
end;
end;
function CalculateChecksum(const InStr: string; out CheckSum: integer): Boolean;
var
IntVal, i: integer;
begin
CheckSum := 0;
Result := ValidNumber(InStr, IntVal);
if Result then
begin
IntVal := IntVal div 10 * 10 + 10;
for i := 1 to Length(InStr) do
inc(CheckSum, CharToIntValue(InStr[i], not Odd(i)));
CheckSum := IntVal - CheckSum;
end;
end;
(* Im ButtonClick bleibt dann noch das hier übrig *)
procedure TForm1.Button1Click(Sender: TObject);
var
CheckSum: integer;
begin
if not CalculateChecksum(Edit1.Text, CheckSum) then
ShowMessage('Ungültige Eingabe: nur 8-stellige Zahlen erlaubt')
else
ShowMessage(IntToStr(CheckSum));
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|