Delphi: Integer und Extended Inkompatible Typen?
Quellcode von dem Private bereich:
INTpi :integer;
INTp1 :integer;
INTp2 :integer;
INTp3 :integer;
INTp4 :integer;
INTp5 :integer;
INTpu1 :integer;
INTpu2 :integer;
INTpu3 :integer;
INTpu4 :integer;
INTpu5 :integer;
INTpeg1 :integer;
INTpeg2 :integer;
INTpeg3 :integer;
INTpeg4 :integer;
INTpeg5 :integer;
INTupeg1 :integer;
INTupeg2 :integer;
INTupeg3 :integer;
INTupeg4 :integer;
INTupeg5 :integer;
Folgender Quellcode:
INTpi := StrToInt(Epi.Text);
INTp1 := StrToInt(Ep1.Text);
INTp2 := StrToInt(Ep2.Text);
INTp3 := StrToInt(Ep3.Text);
INTp4 := StrToInt(Ep4.Text);
INTp5 := StrToInt(Ep5.Text);
INTpu1 := INTp1/100;
INTpu2 := INTp2/100;
INTpu3 := INTp3/100;
INTpu4 := INTp4/100;
INTpu5 := INTp5/100;
Ep(Zahl) sind TEdits die ich zu Integer umformatiere.An der/-n Stelle(n) an denen ich durch 100 teile kommt folgende Fehlermeldung:
Inkompatible Typen: 'Integer und Extended'
Könnt ihr mir da weiterhelfen? Schon mal danke im voraus :)
Wenn ich teile, darf ich keine Int verwenden. Da int nur für ganze Zahlen sind. Also habe ich Float/Real benutzt und jetzt klappt alles :D
2 Antworten
Der /-Operator gibt bei Gebrauch eine Fließkommazahl zurück.
Entweder du speicherst das Ergebnis also in einem anderen Datentyp (wie real):
var
dividend, divisor: integer;
quotient: real;
begin
quotient := dividend / divisor;
end;
oder du wandelst das Ergebnis via Typecast/Rundung wieder zurück in einen Integer:
var
dividend, divisor: integer;
quotient: integer;
begin
quotient := Round(dividend / divisor);
end;
oder du verwendest die euklydische Division (Division mit Rest):
var
dividend, divisor: integer;
quotient: integer;
begin
quotient := dividend div divisor;
end;
In letzterem Fall würde bspw. 13 div 2 das Ergebnis 6 ergeben (6 Rest 1).
Das Ergebnis einer Division ist in den seltensten Fällen ganzzahlig und somit kein Integraltyp.