чтоб получился Double?
function TGridToExcel.GetExcelGridRowHeight: integer;
var
f: Double;
begin
//GridRowHeight и Screen.PixelsPerInch целые
//Работает в 64
f := GridRowHeight;
f := f/Screen.PixelsPerInch;
result := ExcelSheet.Application.InchesToPoints(f);
{
//Работает в 32
result := ExcelSheet.Application.InchesToPoints(GridRowHeight/Screen.PixelsPerInch);
//Не работает в 64 (ноль в параметре)
result := ExcelSheet.Application.InchesToPoints(Double(Double(GridRowHeight)/Double(Screen.PixelsPerInch)));
}
end;
Зачем вообще приводить в нижней строке к double? У тебя результат целочисленный, подели div
Потому что ) Excel2000: function InchesToPoints(Inches: Double): Double; overload;
просто берешь и делишь
@KalinaSviridova Только бы все поделить. Умножать нужно. 😊
))) Заиспользовала бы MulDiv, да жаба давит
тебеж дабл нужен
Потому и не поставила, а только зашутила) Полчасика еще надо и может освобожусь
Извините, пошла на простые и ясные D7-32 договоры ) Потом
Появилось время для неверующих Фом) ```Pascal unit Unit6; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm6 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form6: TForm6; implementation {$R *.dfm} uses ComObj; procedure TForm6.Button1Click(Sender: TObject); var Numerator_, Denominator_: integer; InchesToPoints_: Double; Excel_: OLEVariant; begin Numerator_ := 20; Denominator_ := 96; Excel_ := CreateOleObject('Excel.Application'); InchesToPoints_ := Excel_.InchesToPoints(Numerator_/Denominator_); ShowMessage({$ifdef WIN64}'64'{$else}'32'{$endif}+': '+FloatToStr(InchesToPoints_)); end; end.
Для тех, кто в воображаемом танке procedure TForm6.Button1Click(Sender: TObject); var Numerator_, Denominator_: integer; Div_{, InchesToPoints_}: Double; Excel_: OLEVariant; begin Numerator_ := 20; Denominator_ := 96; Excel_ := CreateOleObject('Excel.Application'); Div_ := Numerator_/Denominator_; ShowMessage({$ifdef WIN64}'64'{$else}'32'{$endif}+': '+FloatToStr(Div_)); // InchesToPoints_ := Excel_.InchesToPoints(Numerator_/Denominator_); // ShowMessage({$ifdef WIN64}'64'{$else}'32'{$endif}+': '+FloatToStr(InchesToPoints_)); end;
Обсуждают сегодня