procedure my_key_func(var in: array of Char; inLen: Integer; var out: array of Integer; var outLen: Integer);
var
  i: Integer;
begin
  i := 0;
  for i:=0 to inLen-1 do begin
    out[i div 2] := in[i] + in[i+1];
    Inc(i);  
  end;
  outLen := i div 2;
end;function main(argc: Integer; var argv: array of array of Char): Integer;
var
  input: array[1..8] of Char;
  output: array[1..8] of Integer;
  outLen: Integer;
begin
  input[1] := $12;
  input[2] := $34;
  .....
  my_key_func(input, 8, output, outLen);
  ....
  Result := 0;
end;这是语法转换

解决方案 »

  1.   

    测试过了,结果是:46 ce 64 ecprogram Project1;
    {$APPTYPE CONSOLE}
    uses SysUtils, Windows;procedure MyKeyFunc(Buffer: PByte; BufLen: Word;
      lpBuffer: PWord; lpBufLen: PWord);
    var
      I: Word;
    begin
      I := 0;
      while I < BufLen do
      begin
        lpBuffer^ := Buffer^ + PByte(Integer(Buffer) + SizeOf(Byte))^;
        Inc(lpBuffer);
        Inc(Buffer, SizeOf(Word));
        Inc(I, 2);
      end;
      lpBufLen^ := Round(I / 2);
    end;const
      Input: array [0..7] of Byte = ($12, $34, $56, $78, $21, $43, $65, $87);
    var
      I, OutLen: Word;
      Output: array [0..7] of Word;
    begin
      OutLen := 0;
      MyKeyFunc(@Input[0], 8, @OutPut[0], @OutLen);
      for I := 0 to OutLen - 1 do
        Write(Format('%2.0x', [OutPut[I]]));
      Write('Press any key to continue...');
      Readln;
    end.
      

  2.   

    copy_paste(木石三),兄弟你发了!