Показать сообщение отдельно
  #18  
Старый 11.01.2016, 16:17
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Думаю вот такой вариант будет работать:
Код:
{$IF (sizeof(Char)=2)} // для unicode
function COMRead(AHandle: THandle): RawByteString; overload;
function COMWrite(AHandle: THandle; Data: RawByteString): Cardinal; overload;
{$ELSE}
function COMRead(AHandle: THandle): String; overload;
function COMWrite(AHandle: THandle; Data: string): Cardinal; overload;
{$ENDIF}
Странно - у меня этот блок не работает.
Правда, функции function COMRead(AHandle: THandle): String; - у меня нет.
Какая из этих функций отвечает за чтение из порта?
Код:
function AccessCOM(P:PChar):boolean;
 stdcall; external 'comapi32.dll';
function OpenCOM(P:PChar):boolean;
 stdcall; external 'comapi32.dll';
function CloseCOM:boolean;
 stdcall; external 'comapi32.dll';
function SetCOM(baud:DWORD;
                bsize,parity,
                sbits:BYTE):boolean;
 stdcall; external 'comapi32.dll';
function SetModCOM(baud:DWORD;bsize,parity,
                sbits:BYTE;DTR,
                RTS:boolean):boolean;
 stdcall; external 'comapi32.dll';
function SetCOMTo(RdIvl,RdTotM,RdTotC,
          WrTotM,WrTotC:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function SetCOMBuff(RdBuff,
                    WrBuff:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function EscFuncCOM(F:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function GetModem(var lpD:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function PurgeCOM:boolean;
 stdcall; external 'comapi32.dll';
function FlushCOM:boolean;
 stdcall; external 'comapi32.dll';
function TxByteCOM(data:byte):boolean;
 stdcall; external 'comapi32.dll';
function TxDataCOM(const Buffer; N:DWORD;
                   var lpNDone:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function RxDataCOM(var Buffer; N:DWORD;
                   var lpNDone:DWORD):boolean;
 stdcall; external 'comapi32.dll';
function ClrErrCOM(var lpE:DWORD):boolean;
 stdcall; external 'comapi32.dll';
или - отсюда?
Код:
  private
    function  ReadParams:Boolean;
    procedure PClear;
    procedure Open_COM(n:Integer);
    procedure DisableControls;
    procedure ReadConfig;


Удивляюсь - неужели фирма-разработчик продукта или наши умельцы не разработали до сих пор патч, чтобы решить вопрос перехода на уникод на системном уровне?!
Ответить с цитированием