论坛风格切换切换到宽版
  • 1945阅读
  • 2回复

老虎版主,又来请教您了 [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-08-14
一个待汉化软件里面有一个 .ini 文件,现在需要修改这个 .ini 中的某一句话,应该怎么做?
比如,ABC.ini文件里,有 item,abc= def ghi jkl
现在的问题是:
1.如何修改为 item,cba= def ghi jkl
2.如何修改为 item,abc= def ihg jkl
3.如何修改为 item,mno=pqr stu vwx (即整句替换)

----------------------------------------->>
function ReplaceLine(strFilename, strFind, strNewLine: String): Boolean;
var
strTemp : String;
iLineCounter : Integer;
a_strTextfile : TArrayOfString;

begin
LoadStringsFromFile(strFilename, a_strTextfile);
for iLineCounter := 0 to GetArrayLength(a_strTextfile)-1 do
   begin
     if (Pos(strFind, a_strTextfile[iLineCounter]) > 0) then
       a_strTextfile[iLineCounter] := strNewLine;
   end;
SaveStringsToFile(strFilename, a_strTextfile, False);
Result := True;
end;

调用这个函数ReplaceLine,传入下列参数
strFilename = 文件名称
strFind = 要替换的字符串
strNewLine = 新的字符串
如果返回 true 则代表替换成功




---------------------------------------------------------->
不知道我下面这么弄对不?测试没有反应,没有替换成功……
abc.ini内容:
[A]
item,abc= def ghi jkl


脚本:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program


[Files]

Source: "abc.ini"; DestDir: "{app}";

[code]

function ReplaceLine(strFilename, strFind, strNewLine: String): Boolean;
var
strTemp : String;
iLineCounter : Integer;
a_strTextfile : TArrayOfString;

begin
LoadStringsFromFile(strFilename, a_strTextfile);
for iLineCounter := 0 to GetArrayLength(a_strTextfile)-1 do
   begin
     if (Pos(strFind, a_strTextfile[iLineCounter]) > 0) then
       a_strTextfile[iLineCounter] := strNewLine;
   end;
SaveStringsToFile(strFilename, a_strTextfile, False);
Result := True;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
begin
case CurPageID of
wpFinished:
begin
ReplaceLine('{app}\abc.ini','item,abc= def ghi jkl','item,mno=pqr stu vwx');
end;
end;
Result:=True;

end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-08-15
ReplaceLine('{app}\abc.ini','item,abc= def ghi jkl','item,mno=pqr stu vwx');
应该是
ReplaceLine(ExpandConstant('{app}\abc.ini'),'item,abc= def ghi jkl','item,mno=pqr stu vwx');
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 2 发表于: 2015-08-15
回 1楼(gnatix) 的帖子
gnatix:ReplaceLine('{app}\abc.ini','item,abc= def ghi jkl','item,mno=pqr stu vwx');应该是ReplaceLine(ExpandConstant('{app}\abc.ini'),'item,abc= def ghi jkl','item,mno=pqr stu vwx'); (2015-08-15 01:58) 

谢谢老虎版主,看来又是我粗心大意,要把 ExpandConstant 记住…