メモリ操作(CopyMemory)するには?


Monday  2005-06-15 18:06:52  No: 15639

メモリ操作についてですが、同じ内容のデータを頻繁に書き込む場合、
すでに書き込んだメモリアドレスから新しい領域に転写することは
可能なのでしょうか?
たとえば、

CopyMemory(Answer+MovePoint, Answer+StartPoint, nSize);

のように同じメモリ領域同士で転写したいのですがうまくいきません。
Delphiをはじめて1ヶ月程度なのでメモリ操作に関して経験が乏しいため
思い切って書き込ませていただきました。

開発環境はDelphi 7 です。ヘルプを見てもCopyMemoryについて
記述がありませんでした。よろしくお願いします。


えっと  2005-06-15 18:58:22  No: 15640

> ヘルプを見てもCopyMemoryについて記述がありませんでした。

API ですから、それ用のヘルプをみるか、MSDN をみてください。

普通は、Delphi で基本的なメモリ操作をするときは、TMemoryStream を使います。


通りすがり  2005-06-15 22:18:30  No: 15641

var
  S, D: array [0..10] of Byte;
  Size: Integer;
begin
  Size := SizeOf(D[0]) * Length(D);
  FillChar(S[0], Size, $FF);
  CopyMemory(@D[0], @S[0], Size);
end;

VCL のソースでは System.Move を使っていることが多いようです。
  System.Move(S[0], D[0], Size);


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加