2
我正在爲存儲庫構建SQL查詢構建器。此構建器將查找查詢的所有必填字段並創建SQL文本。爲此,我使用Format()過程。但是,我在運行時創建必須傳遞給Format過程的TVarRec數組時遇到問題。德爾福:如何使用格式()與運行時構建的TVarRec數組?
使用像Format('%s,%s',['AString','AnotherString']);`這樣的常量很容易構建這個數組。但是我們在運行時如何創建它?
這裏是我的方法的簡化版本:
procedure BuildString;
begin
FStrings := TStringList.Create;
FStrings.Add('String 1');
FStrings.Add('String 2');
FStrings.Add('String 3');
FFormatString := '%0:s, %1:s, %2:s';
SetLength(FFormatStringParams, FStrings.Count);
for I := 0 to FStrings.Count - 1 do
begin
aString := FStrings.Strings[I];
FFormatStringParams[I].VString := Addr(aString);
end;
ShowMessage(Format(FFormatString, FFormatStringParams));
end;
但是當我運行它,我得到錯誤「格式 '%0:S,%1:S,%2:S' 是無效或參數」
我明白,我錯誤地建立TVarRec陣列,我必須通過格式程序。任何人都可以幫我在這不兼容?
謝謝。
非常感謝。那樣做了! – Ludo
@Remy你的編輯很奇怪。 –
FWIW,@Ludo,如果你真的想操作'TVarRec's,請閱讀我關於[開放數組參數和const數組]的文章(http://www.rvelthuis.de/articles/articles-openarr.html)。它還顯示可幫助您執行此操作的代碼。 –