function DebugIsEnabled: Boolean;
var
A: AnsiString;
U: String;
begin
AppLoc := RemoveQuotes(CurrentAppLoc(''))
if Standalone then
LoadStringFromFile(AppLoc + '\Default.ini', A)
else
LoadStringFromFile(AppLoc + '\FrankenStein\Default.ini', A);
U := A;
if CompareStr(U, 'IsCombo=TRUE') = 0 then
Result := True
else
Result := False
end;
不知何故,检查功能不能按我需要的方式工作。我无法确定我做错了什么。 CompareStr
似乎返回20
而不是0
。几年前我制作了一个类似的工具,相同的检查功能就像一个魅力(任务被正确显示/隐藏)。
我在这里做错了什么?
答案 0 :(得分:0)
我的猜测是文件中有一些空格,就像行尾的换行符一样。
在比较之前,尝试使用Trim
function修剪所有前导和尾随空格:
U := Trim(A);
if CompareStr(U, 'IsCombo=TRUE') = 0 then
附注:尾随if else
语句可简化为:
Result := (CompareStr(U, 'IsCombo=TRUE') = 0);
由于我们可以扣除您的答案,因此您的文件显然是一个INI文件。你从来没有告诉我们!
原始代码加载整个文件。然后它将它视为仅文件中有一行(IsCombo=TRUE
)。显然,文件中不仅有一行,至少有节标题[Link]
。但是我们怎么能从你的问题中知道呢?
因此,您实际问题的答案是:字符串不一样! U
(和A
)包含整个文件,而您将其与一个随机选择的文件行。
答案 1 :(得分:-1)
我最终使用了这个。发布所有三张支票,因为我最终没有唱CompareStr
(它表现得非常奇怪,并且无法弄清楚我做错了什么)
function DebugIsEnabled: Boolean;
var
A: AnsiString;
U: String;
begin
if Standalone then
AppLoc := RemoveQuotes(CurrentAppLoc(''))
else
AppLoc := RemoveQuotes(CurrentAppLoc('')) + '\FrankenStein\';
result := GetIniString('Link', 'IsCombo', 'TRUE', AppLoc + 'Default.ini') = 'TRUE'
end;
function VidIsEnabled: Boolean;
var
A: AnsiString;
U: String;
begin
if Standalone then
AppLoc := RemoveQuotes(CurrentAppLoc(''))
else
AppLoc := RemoveQuotes(CurrentAppLoc('')) + '\FrankenStein\';
result := IniKeyExists('Section', 'Key', AppLoc + 'Base.ini')
end;
function UmbrellaIsEnabled: Boolean;
var
A: AnsiString;
U: String;
begin
if Standalone then
AppLoc := RemoveQuotes(CurrentAppLoc(''))
else
AppLoc := RemoveQuotes(CurrentAppLoc('')) + '\FrankenStein\';
result := GetIniString('Config', 'Umbrella', true', AppLoc + 'Default.ini') = 'true'
end;
关于Log
,我从未使用过,所以我无法弄清楚如何触发它。我知道它很蹩脚,但是......