2016-05-01 30 views
-1

什麼是TLang下的「引擎」...我想知道如何「填充」在CollectLangString中定義的TStings?

TLang在我的小項目中沒問題,但項目很大很難管理。我試圖弄清楚它是如何工作的。我已經在FMX.Types中投入了很多過程和函數。我專注於:CollectLangStart,CollectLangFinish和CollectLangStrings。調用這些函數可以被編譯,但我不知道這個TStrings在什麼地方和什麼時候被填充,TStrings保持空白。文件談論「場景」,但它非常有限。

回答

1

TStyleManager.UpdateScenes必須CollectLangStart和複製CollectLangStrings

var 
    Str: TStrings; 
begin 
    CollectLangStart; 
    TStyleManager.UpdateScenes; 
    Str := TStringList.Create; 
    try 
    Str.Assign(CollectLangStrings); 
    Str.SaveToFile(ExtractFilePath(ParamStr(0)) + 'lang.lng'); 
    finally 
    Str.Free; 
    CollectLangFinish; 
    end; 
end; 
+1

之間被稱爲'CollectLangStart/Finish'和'TStringList.Create/Free'應該是在單獨的'嘗試/ finally'塊。 –

+1

@雷米:的確如此。所以'CollectLangStart;嘗試... Str:= TStringList.Create;嘗試...最後Str.Free;結束;最後CollectLangFinish;結束;或者甚至可能相反。 –

+0

我會先創建'TStringList',然後收集並釋放lang字符串,然後保存並釋放'TStringList'。這樣lang存儲器在'SaveToFile()'需要分配它自己的任何內存之前就已經被釋放了。 –

相關問題