Текущий архив: 2010.08.27;
Скачать: CL | DM;
Вниз
Падает на TPrinter.BeginDoc Найти похожие ветки
← →
@!!ex © (2010-03-04 14:08) [0]Есть dll, в ней экспортится функция
Procedure Print(); stdcall;
begin
MyPrinter := TPrinter.Create();
OffsetY := Round(MyPrinter.PageHeight * 0.05);
CenterX := MyPrinter.PageWidth div 2;
OffsetX1 := Round(MyPrinter.PageWidth * 0.1);
OffsetX2 := Round(MyPrinter.PageWidth * 0.35);
OffsetX3 := Round(MyPrinter.PageWidth * 0.4);
MyPrinter.Canvas.Font.Height := 24;
MyPrinter.Canvas.Font.Name := "Times New Roman";
MyPrinter.BeginDoc();
...
end;
В тестовом примере с приложением на Delphi - все норм отрабатывает.
При вызове из С++ теста или из другой dll - валится с AV на BeginDoc();
В чем может быть проблема?
← →
Sapersky (2010-03-04 14:41) [1]В модуле Printers принято использовать объект-синглтон (или как он правильно называется), возвращаемый функцией Printer, а не создавать свой объект.
Иначе получаем:
procedure TPrinter.BeginDoc;
begin
<...>
SetAbortProc(DC, AbortProc);
<...>
end;
function AbortProc(Prn: HDC; Error: Integer): Bool; stdcall;
begin
Application.ProcessMessages;
Result := not FPrinter.Aborted; // FPrinter не создан, AV
end;
← →
@!!ex © (2010-03-04 15:08) [2]Точно! То что нужно! Все заработало. Спасибо.
Страницы: 1 вся ветка
Текущий архив: 2010.08.27;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.057 c