Delphi 2009 では文字列がUnicodeになったため、Delphi2007以前のコードを移植する必要があります。
の変換をし、コンパイルエラーを適宜修正すればよい。
バッファをRawByteStringに変更する方法もあるが、ライブラリ内に実装されている場合変更できないこともある。その場合は、下記コード例のように、stringからpAnsiCharやpByteに積みなおして取り出す必要がある。
var
bytes:pByte;
src:string;
srcp:Pointer;
begin
by:=Length(src) * SizeOf(src[1]);
srcp:=Pointer(src);
GetMem(bytes,by);
Move(srcp^,bytes^,by);
end;
変更可能なコードでバッファをString型で実装している場合 Pcharで用意したバッファからStringにSetStringしている場合に、不具合が起きる場合がある。このケースはstring型からRawByteString型に変える。
var
buffer:String;
begin
SetString(Buffer,pBuffer,cbTransferred);//pBuffer:PChar
end;
は
var
buffer:RawByteString;
begin
SetString(Buffer,pBuffer,cbTransferred);//pBuffer:PAnsiChar
end;
とすれば良さそうだ。