procedure SetDefaultPrinter2(PrinterName: string); var I: Integer; Device: PChar; Driver: PChar; Port: PChar; HdeviceMode: THandle; aPrinter: TPrinter; begin Printer.PrinterIndex := -1; GetMem(Device, 255); GetMem(Driver, 255); GetMem(Port, 255); aPrinter := TPrinter.Create; try for I := 0 to Printer.Printers.Count - 1 do begin if Printer.Printers = PrinterName then begin aprinter.PrinterIndex := i; aPrinter.getprinter(device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver); StrCat(Device, Port); WriteProfileString('windows', 'device', Device); StrCopy(Device, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; finally aPrinter.Free; end; FreeMem(Device, 255); FreeMem(Driver, 255); FreeMem(Port, 255); end; 

Found the default printer installation code, swears.

 [DCC Error] Unit3.pas(437): E2010 Incompatible types: 'string' and 'TStrings' 

and in general what to do in this situation?

  • @ big-vl, If you are given an exhaustive answer, mark it as correct (click on the check mark next to the selected answer). - Vitalina

1 answer 1

Here

if Printer.Printers = PrinterName then

you must specify the index of the string Printer.Printers [i] .