アプリ版:「スタンプのみでお礼する」機能のリリースについて

delphiで配列をコピーするには、どうしたらいいのでしょうか?

Betr_Hairetu := Moto_Hairetu ;

としたいのですが。

Betr_Hairetu := Copy(Moto_Hairetu, 0 ,Length( Moto_Hairetu ) );

では、ダメでした。

ループで、一から入れ直せばいいのですが、かっこわるいなー・・・。
なにか、簡単な関数があるとは思うのですが、探すことができませんでした。
よろしくお願いします。

A 回答 (1件)

本来のパスカルでは、配列と文字列(ストリング)は異質であって


相容れるものではありません。
DelphiのCopy関数は、文字列をコピーするものであって
配列をコピーするものではありません。
ちなみに、Copy関数の第2引数に0が指定されることはありません
Delphiの文字列のインデクスは1から始まります

ところが、Delphiのあるバージョンから、array[] of char と
string が 同じように扱われるようになったので、やや混乱すると思います。

ですが、Delphiでは、文字配列かstringかをはっきり区別して使用するほうが
無難です。

質問では、配列としか書かれていないので、整数の配列か、はたまたレコードの配列か
わかりませんが、

var
ar1, ar2 :array[0..5] of integer;
begin
for i := 0 to 5 do ar1[i] := i * 11;

Move(ar1,ar2, SizeOf(ar1));
end

と Move関数が使えます


また、OSがWindowsで、Win32を使えるなら

CopyMemory関数を使う方法もあります。
    • good
    • 2
この回答へのお礼

なるほどー。
やはり、変数の型がポイントになりますね。
ありがとうございます。

>Copy関数の第2引数に0が指定されることはありません
訂正ありがとうございます。
ありがとうございます。

お礼日時:2008/01/15 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!