Dim Buffer As Variant
Buffer = MSComm1.Input
Dim CardNumber4 As Long
If CDec(Buffer(3)) > 127 Then
  Buffer(3) = Buffer(3) - &H70
  CardNumber4=CDec(Buffer(3))*2^24+CDec(Buffer(4))*2^16+(Buffer(5)*2^8)+Buffer(6)
else
  CardNumber4=CDec(Buffer(3))*2^24+CDec(Buffer(4))*2^16+(Buffer(5)*2^8)+Buffer(6)我需要改成Delphi的程式

解决方案 »

  1.   

    procedure MSCommComm(Sender: TObject);
    var
      buffer :variant;
      len: integer;
      CardNumber4: DWORD;
      
    begin
      len := MSComm.InBufferCount;
      buffer := MSComm.Input;
      
      if buffer[2] > 127 then begin
        dec(buffer[2], $70);    
      end;
      
      CardNumber4 := buffer[2]*(2 shl 24) + buffer[3]*(2 shl 16) + buffer[4]*(2 shl 8) + buffer[5];
    end;差不多是这样,你自己调试一下.
      

  2.   

    那就改成:
      buf :variant;
      buffer :array of byte;  SetLength(buffer, len);
      Move(pchar(@buf)^, pchar(buffer)^, len);
      不过你自己注意一下变量值界的问题吧.