2014-01-10 76 views
-1

我目前在Delphi中編程,需要將數組'BookArray:TBook數組'轉換爲BookArray2:數組字符串'。 有沒有函數或無論如何將類型數組轉換爲字符串數組?Delphi - 將一個數組類型轉換爲一個字符串數組

謝謝喬治。

+1

我們不知道'TBook'是什麼,所以我們無法回答。此外,你必須定義這個'轉換'實際上應該做什麼。 (最後,我不知道'類型數組'是什麼......) –

+1

是的,請提供您的自定義TBook類型的聲明。 – Zam

回答

3

您需要一個將您的類型轉換爲字符串的函數。讓我們假設存在這樣的:

function BookToString(const Book: TBook): string; 

然後在應用功能的陣列中的每個元素:

function BookArrayToString(const Books: array of TBook): TArray<string>; 
var 
    i: Integer; 
begin 
    SetLength(Result, Length(Books)); 
    for i := 0 to high(Books) do 
    Result[i] := BookToString(Books[i]); 
end; 
1

沒有標準的函數來做到這一點。你需要仔細檢查你的tbook數組,並且一步一步地將其中的內容轉換爲字符串並將其放入字符串數組中。

SetLength(BookArray2, length(BookArray)) 
for i := 0 to High(BookArray) do begin 
    BookArray2[i] := BookArray[i].Author + ' ' + BookArray[i].Title + ' ' + IntToStr(BookArray[i].Edition); 
end; 
+1

嗯。 'SetLength'應該在循環之外。 –

+0

@Pieter - 「沒有標準功能」,但有!對於類,它是.ToString方法:'BookArray2 [i]:= BookArray [i] .ToString();''http://docwiki.embarcadero.com/Libraries/XE5/en/System.TObject.ToString併爲它recotds它是運算符隱式:'BookArray2 [i]:= BookArray [i];'http://docwiki.embarcadero.com/RADStudio/XE3/en/Operator_Overloading_(Delphi)//這個實例應該由topicstarter來處理,但是在租用首選的名稱/方法fo轉換被設置爲 –

+0

@DavidHeffernan爲什麼應該在循環之外使用setlength? –

相關問題