Dllのメソッドを使うのに悩んでいます。
Read命令があるんですが、データを読み込むために、バッファへのポインタ引数と読み込むデータサイズ指定の引数があります。
その引数よりPCharを用いてデータを取るのはいいと思うのですが、読み込んだデータの中にNull文字が入っていたら、データサイズによらずそこでデータが切れてしまうと思うのです。
これをNull文字によらず、データサイズ分、きちんとデータが読み込める方法があるでしょうか?
乱文でもうしわけないです…
"しまうと思うのです。"と言うことは、実際には試されていないのですか?
でしたら、まずは試してみることをお勧めします。Nullを含んだ文字の読み取りですが、わたしはさほど苦労した記憶はありません。
procedure TForm1.Button1Click(Sender: TObject);
var
A: PChar;
str:string;
i:integer;
begin
A:=PChar('ABC'+#0+'DEF');
str:='';
for i:=0 to 6 do
if A[i]<>#0 then
str:=str+Char(A[i]);
caption:=str;
end;
> データを読み込むために、バッファへのポインタ引数と読み込むデータサイズ指定の引数があります。
適切にバッファを設定すると、#0 で string 型が途切れることはありません。
PChar で受け取ったら、適当にキャストなぞしないでちゃんと SetString() を
使って string 型に変換すると途切れることはありません。
ツイート | ![]() |