Ich benutze ja nur äußerst selten um probleme beim Programmieren zu lösen aber das verwirrt mich doch ZU sehr...
bei folgendem Code tritt ein EInvalidOp auf... wobei mich wundert was er an normaler Division nicht kennt... ich hab nun schon alle werte wo es möglich war durch round() in Integer Werte umgeformt aber es will nicht funktionieren...
vorher hatte ich die quersum-Prozedur noch mit parameterübergabe...aber als es nicht funktionierte hab ich das dann auch geändert aber es half alles nichts...
zum verständinss was das prog überhaupt macht: es soll diejenigen Zahlen ausgeben wo die summe der Quersummen zweier Zahlen gleich der Quersumme der Summe zweier zaheln ist... fragt nicht warum ich das tue...fand ich einfach nur interessant ^^
Delphi-Quellcode:
type
TForm2 = class(TForm)
QA_Ausgabe: TLabel;
AQ_Ausgabe: TLabel;
Edit1: TEdit;
Button1: TButton;
Gauge1: TGauge;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
zahl,quer1:real;
x,y,z,AQ_summe,QA_Summe:integer;
implementation
{$R *.dfm}
Procedure quersum;
Var j,laenge:integer;
ziff1,ziffer1: array [0..100] of real;
strzahl:string;
Begin
strzahl:=FloatToStr(zahl);
laenge:=length(strzahl);
for j:=1 to laenge do
begin //aufspalten der Zahl in einzelne Ziffern
zahl:=zahl/10;
ziffer1[j]:=frac(zahl);
zahl:=trunc(zahl);
ziff1[j]:=ziffer1[j]*10;
end;
quer1:=0;
while j<>0 do
begin
quer1:=ziff1[j]+quer1;
j:=j-1;
end;
End;
Procedure QuersummenAddition;
Var x_quer,y_quer:real;
Begin
zahl:=x;
quersum;
x_quer:=quer1;
zahl:=y;
quersum;
y_quer:=quer1;
QA_Summe:=round(x_quer)+round(y_quer);
end;
Procedure AdditionDerQuersumme;
Begin
zahl:=x+y;
quersum;
AQ_Summe:=round(quer1);
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
z:=round(StrToInt(edit1.Text));
y:=10;
x:=10;
repeat
begin
y:=y+1;
x:=10;
Gauge1.Progress:=round((y div z)*100);
repeat
begin
x:=x+1;
QuersummenAddition;
AdditionDerQuersumme;
if round(QA_Summe)=round(AQ_Summe) then
begin
QA_Ausgabe.Caption:= FloatToStr(QA_Summe);
AQ_Ausgabe.Caption:= FloatToStr(AQ_Summe);
end;
end;
until x=z;
end;
until y=z;
end;
end.
nebenbei ewähnt bin ich in delphi noch anfänger als seit nicht zu hart