2017-03-06 37 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