簡體   English   中英

Delphi:“不兼容的整數和擴展類型”

[英]Delphi: “Incompatible types Integer and Extended”

我目前面臨無法將我的 ClientWidth 除以 2(或乘以 0.5,因為 Delphi 給我的錯誤消息)的問題:

[Error] Unit1.pas(59): Incompatible types: 'Integer' and 'Extended'
[Error] Unit1.pas(60): Incompatible types: 'Integer' and 'Extended'
[Error] Unit1.pas(61): Incompatible types: 'Integer' and 'Extended'

procedure TForm1.FormResize(Sender: TObject);
begin
 // responsive design
 with form1 do begin
 cmdFakultat.left:=0.5*ClientWidth-60;
 txtEingabe.left:=0.5*ClientWidth-60;
 lblAusgabe.left:=0.5*ClientWidth-60;
 end;
end;

end.

根據您所需的行為,使用TruncRound函數,如下所示...

lblAusgabe.left := Trunc(0.5 * ClientWidth) - 60;

或者

lblAusgabe.left := Round(0.5 * ClientWidth) - 60;

這會切斷小數點后的所有內容,結果只留下一個Integer類型。

作為替代方案,您也可以使用div來完成此操作,這更直接一些,並且會為您執行此轉換...

lblAusgabe.left := (ClientWidth div 2) - 60;

整數只能包含整數(我假設 lblAusgabe.left 是一個整數)。 您嘗試分配給它的值有一個小數點。 小數點數字可以在 Pascal 中以實數、雙精度或擴展值存儲。 要將帶分數的數字轉換為整數,您可以使用 round() 函數對其進行四舍五入,也可以使用 trunc() 函數丟棄小數點后的部分。

另一種解決方案是用整數計算您需要的值。 例如:

cmdFakultat.left := ClientWidth div 2-60;

Div 除以整數並返回一個整數值,丟棄小數點后面的任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM