2016-05-01 67 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()'需要分配它自己的任何内存之前就已经被释放了。 –