Autor Beitrag
Lokke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Di 03.05.05 10:56 
Hi @all,

ich habe eine Funktion, die mir mein Ist-Offset berechnen soll:

z.B.
Offsetist := (100-75)/2 + 75 = 87,5

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TSpgRegeln.IstOffsetberechnung(Maximum, Minimum, x : Integer) : Integer;
begin
  result := abs((Maximum - Minimum) / 2 + x);
end;


Der Wert x ist eigentlich wieder mein Minimum Wert. Nun bekomme ich aber die Fehlermeldung

ausblenden Delphi-Quelltext
1:
[Fehler] SprRegeln.pas(85): Inkompatible Typen: 'Integer' und 'Extended'					


Wo mach ich den bitte ein Fehler???

Thanks for HELP


Moderiert von user profile iconKlabautermann: Topic aus VCL (Visual Component Library) verschoben am Di 03.05.2005 um 11:55
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 03.05.05 11:00 
Der Code müsste so aussehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TSpgRegeln.IstOffsetberechnung(Maximum, Minimum, x : Integer) : Integer;  
begin  
  result := abs(round((Maximum - Minimum) / 2 + x));  
end;


oder so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TSpgRegeln.IstOffsetberechnung(Maximum, Minimum, x : Integer) : Integer;  
begin  
  result := abs((Maximum - Minimum) div 2 + x);
end;


Was round und div ist, dürfte klar sein. abs will in seiner Klammer einen Integerwert haben und keinen Real-Wert der durch / entsteht, da / auch Real zurückgibt.
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Di 03.05.05 11:01 
Hi,

probiers mal so?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function TSpgRegeln.IstOffsetberechnung(Maximum, Minimum, x : Integer) : Integer;  
begin  
  result := abs((Maximum - Minimum) div 2 + x);  
end;

Oder übergebe Extendet Werte. Den mit "/" werden soweit ich mich erinnere nur Floats berechnet! Für integer mus man "div" benutzen.

Cu
Neo
Lokke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Di 03.05.05 11:08 
Hi,

stimmt ja, hab ich vergessen, mein blödheit :autsch:

Danke
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Di 03.05.05 11:11 
Mist war ich doch langsamer!

Cu
Neo