habe den folgenden Algorithmus geschrieben. Er funktioniert um die Quersumme zu berechnen. Allerdings ruft er eine Hand voll Fehlermeldungen aus wobei das Ergebnis immer richtig ist.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
a:
Array of integer;
implementation
{$R *.dfm}
procedure Quersumme;
var s:
String;
c:char;
x1,x2,v:integer;
begin
with form1
do
begin
s:=Edit1.Text;
x1:=length(s);
label3.caption:=IntToStr(x1);
SetLength(a,x1);
for x2:=1
to x1
do
begin
a[x2]:=StrToInt(s[x2]);
end;
for x2:=0
to x1
do
begin
v:=v+a[x2];
end;
label4.Caption:=IntToStr(v);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Quersumme;
end;
end.
etwas verwundert bin ich über die erste For-Schleife
Delphi-Quellcode:
for x2:=1 to x1 do
begin
a[x2]:=StrToInt(s[x2]);
end;
hätte x am liebsten 0 zugewiesen und die Abbruchbedingung x-1.Mit der Begründung, dass das erste Array-element ja eigentlich a[0] ist aber wahrscheinlich ist das egal ob die Zahlenkette bei a[0] oder [1] anfängt. Im Grunde habe ich das so gemacht weil ich auf s[0} nicht zugreifen darf.
Meine Frage, gibt es ne Musterlösung die weniger problematisch ist?