안녕하세요. 최용일입니다.
둘 다 파라매터를 잘 못 넣어주었네요.
아래는 두 함수의 프로토타입입니다. 참조하여 제대로 값을 넣어주세요.
function OpenPrinter(pPrinterName: PChar; var phPrinter: THandle; pDefault: PPrinterDefaults): BOOL; stdcall;
function WritePrinter(hPrinter: THandle; pBuf: Pointer; cbBuf: DWORD; var pcWritten: DWORD): BOOL; stdcall;
^^ 항상 즐코하세요.
최영근 wrote:
> 안녕하세요 ?
>
> 델파이로 도트 프린터에서 직접 인쇄하는 기능을 만들려고 하는데
> 3.0 으로 컴파일하면 이상없이 실행되는데
> 5.0 에서는 아래와 같은 에러 메세지가 뜹니다.
>
> [Error] Types of actual and formal var parameters must be identical
>
> 왜 그런 것인가요 ?
>
> 소스는 다음과 같습니다
> <= 표시가 있는 곳이 에러 나는 곳
>
>
> function TForm1.PrintData( Data : String ): Boolean;
> var
> Prt : TPrinter;
> ADevice, ADriver, APort : array[0..79] of Char;
> ADeviceMode : THandle;
> DocInfo : TDocInfo;
> HPrt : HDC;
> WriterCount : Integer;
> begin
> Result := False;
>
> Prt := Printer;
> Prt.PrinterIndex := -1;
>
> Prt.GetPrinter (ADevice, ADriver, APort, ADeviceMode);
>
>
> if not OpenPrinter(ADevice, HPrt, nil) then <=이 부분에서 에러 발생.
> begin
> Result := False;
> Exit;
> end;
>
> if HPrt = 0 then
> begin
> Result := False;
> Exit;
> end;
>
> ........
>
>
> if not WritePrinter(HPrt, PChar(Data), Length(Data),
> WriterCount) then <=이 부분에서 에러 발생.
>
> begin
> MessageBeep($ffff);
> Result := False;
> Exit;
> end;
>
>