我有一個接收打印命令並將其解碼的應用程序。 我將打印命令保存在文本文件中。然後在字節數組中讀取它。 解碼的字符串還包含顯示爲垃圾字符的圖像部分。 當我嘗試使用WritePrinter函數將字節數組發送到打印機時,它將返回False。 我試圖檢查返回的錯誤代碼是,但找不到任何有關此錯誤代碼以及它可能發生的原因。使用熱敏打印機打印base64編碼打印命令時出錯
請找到下面的代碼片段:
AssignFile (decodedfile, st_path + '\Sample.txt');
reset(decodedfile);
SetLength(buffer, FileSize(decodedfile));
For i := 1 to FileSize(decodedfile) do
Read(decodedfile, buffer[i - 1]);
CloseFile(decodedfile);
DocInfo.pDocName := pChar('Direct to Printer');
DocInfo.pOutput := Nil;
DocInfo.pDatatype := pChar('RAW');
PrinterName := cmbPrinters.Text;;
if not WinSpool.OpenPrinter(pChar(PrinterName), hPrinter, nil) then begin
raise exception.create('Printer not found');
end;
If StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
Abort;
try
If not StartPagePrinter(hPrinter) then
Abort;
try
If not WritePrinter(hPrinter, @buffer, Length(buffer), BytesWritten) then begin
dError := GetLastError;
ShowMessage(InttoStr(dError));
Abort;
end;
finally
EndPagePrinter(hPrinter);
end;
finally
EndDocPrinter(hPrinter);
end;
WinSpool.ClosePrinter(hPrinter);
如果有人遇到類似這樣的任何問題,請讓我知道如果我錯過了什麼。
注:
- 我已經證實沒有在輸入打印命令解碼沒有錯誤。
- 我使用Delphi 4.
1784是[ERROR_INVALID_USER_BUFFER所提供的用戶緩衝區是無效的請求的操作](http://msdn.microsoft.com/en-us/library/windows/desktop/ms681386.aspx) –