Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизРабота с LPT. В D3 все работало, а в D5 ругается, вот пример кода Найти похожие ветки
← →
Cranium (2002-11-13 01:12) [0]В D3 все работало, а в D5 ругается....
[Error] UnitCon.pas(370): Types of actual and formal var parameters must be identicalВот пример кода
private
{ Private declarations }
public
{ Public declarations }
end;
var
PrintYes: Boolean;
FormCon: TFormCon;
FHandle: THandle;
FErrorString: PChar;
FPrinterOpen: Boolean;
FNumberOfBytesWritten: Integer;
NumberOfBytesToWrite: Integer;
OEMStr: PChar;
.............................
procedure TFormCon.OpenPort;
begin
FHandle := CreateFile("LPT1", GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ
or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if FHandle = INVALID_HANDLE_VALUE then
begin
if FErrorString <> nil then
LocalFree(Integer(FErrorString));
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
nil,
GetLastError(),
LANG_USER_DEFAULT,
@FErrorString,
0,
nil);
{SetErrorString; }
raise Exception.Create(FErrorString);
end
else
FPrinterOpen := True;
end;
procedure TFormCon.ClosePort;
begin
CloseHandle(FHandle);
if FErrorString <> nil then
LocalFree(Integer(FErrorString));
end;
← →
Юрий Зотов (2002-11-13 01:25) [1]Еще бы знать, а на что же она ругается...
Уж не на это ли: Exception.Create(FErrorString)?
Ну тогда правильно ругается. А вот так не должна:
Exception.Create(string(FErrorString));
А вообще, то же самое пишется намного проще:
var
FHandle: THandle = 0;
FPrinterOpen: Boolean = False;
procedure TFormCon.OpenPort;
begin
FHandle := CreateFile(...);
FPrinterOpen := Win32Check(FHandle <> INVALID_HANDLE_VALUE)
end;
procedure TFormCon.ClosePort;
begin
CloseHandle(FHandle)
end;
← →
Cranium (2002-11-13 01:56) [2]Ругается вот на это место...
if not WriteFile(FHandle, OEMStr^, NumberOfBytesToWrite,
FNumberOfBytesWritten,nil) then
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c