私はカスタムの戦艦ゲームを作っています。オブジェクトの10x10グリッド(TImage)があります。船がビューポートに表示されるように、実行時に.Pictureプロパティを変更する必要があります。私は与えられた座標に応じて1つの画像のプロパティを変更する必要があるので、私は次の配列を作成しました:Delphi 7 - TImageをTImageの配列に割り当てる
image: array[1..10,1..10] of TImage;
をし、私は彼らにこのようなTImageのオブジェクトに割り当てることを試みた:
player1.image[1,1] := player1.bcvrA1;
なっています(フォーム発射前には存在し)、ビューポート上のすべてのTImageのオブジェクトへのリンクが含まれてするので、私はこのように自分のSampleTImage.Pictureプロパティを変更することができます。
image[x,y].Picture.LoadFromFile(SamleFile);
をしかし、これは、ACCがスローされますエスエーション違反エラー。
モジュール 'Project2.exe'のアドレス0046CF10のアクセス違反です。 アドレス00000628.
の読む私はこの質問を-投稿前研究のビットを行っているが、同様の質問をStackOverflowの上の誰もが、すべてのTImageのオブジェクトは、事前に作成された私の場合には、実行時にオブジェクトを作成し、 -runtimeであり、二次元配列に割り当てられるようになっているので、プロパティをより便利に変更できます。
このようにすることができない場合、私は本当に可能な最適解を見たいと思います。 :)
この質問に既に質問があり、何十回も返信されてしまった場合は、すみません。私はオブジェクトの操作のもののこの種のかなり新しいです。
ありがとうございました! ;)
それを実装するのは間違った方法です。コントロールを使用してゲームの俳優をペイントしないでください。ペイント方法、ペイントボックスなどを使用してください。 –
右かどうかにかかわらずアプローチ。これは、正確に何が起こっているかを私たちに伝えるための小さなコードです。そして、私はDelphi 7をしばらく使っていませんが、 'image [x、y] .Picture:= 'C:\\ SampleFolder \ SampleFile.jpg';'という行はコンパイルされていないと確信しています。適切な[MCVE](http://stackoverflow.com/help/mcve)を提供してください –
@DalijaPrasnikar申し訳ありませんが、私は自分のスレッドをしていたときに、コードの間違った部分をコピーしました。 –