2017-03-06 76 views
-1

我有一个数组,我需要从阵列读取的第一个值,然后读取一次使用以下值:如何从阵列读取值

type 
    TMyCardRecord = record 
    CardSet:integer; 
    CardValue:integer; 
    CardPicture:TBitmap; 
    end; 
Var 
    PlayerCards : array[1..12] of TMyCardRecord; 

procedure TForm2.StartClick(Sender: TObject); //Start New Game Button 
var 
duplicate : boolean; 
pc,p,i : integer; 
y, filename : String; 

begin 
FileName:=('S1.bmp'); ; 

    for i := 1 to 12 do 
    begin 
y := (playercards[i]+filename); 
image1.Picture.LoadFromFile(y); 
end; 

当我尝试添加playercards[i]+filename它说不兼容的类型:stringTMyCardRecord

我怎样才能使它的价值playercards[i]兼容? playercards数组包含基于其分配图像的值。我需要将价值转换为integer才能工作。

+0

你已经在“文件名”中有一个文件名,你想要在它前面加什么目录? –

+1

你为什么要将'filename'添加到数组元素中? –

+0

你的问题可以通过解释你的实际文件名称是什么样子以及你的数组元素实际拥有的更清晰。 –

回答

4

playercards[i]TMyCardRecord的一个实例。 您正试图向TMyCardRecord的此实例添加一个字符串。未定义此字符串和自定义类型的添加。
这就是“不兼容的类型”的含义 - Delphi不知道如何添加字符串和记录,因为它们完全不同,并且它们之间的添加没有定义。

你显然想要的是一个基于特定卡的文件名。
您需要检索文件名中的值 - 可能是卡和套装的价值(CardValueCardSet)。然后你需要将它们转换为字符串。你可以使用IntToStr这个命令。所以:IntToStr(playercards[i].CardValue)IntToStr(playercards[i].CardSet)

最简单的方法是创建一个接受这些值并将它们转换为字符串的函数。
然后,您将该字符串添加到filename