我發現下面的鏈接,但它是C#: c# Check if all Strings in a String List are the Same.檢查在字符串列表中的所有字符串在Inno Setup的同一
我寫了工作守則,可以完成剩下的很好,但它只有使用Sorted String Lists才能正常運行。
問候,
function StringListStrCheck(const S: String; StringList: TStringList): Boolean;
var
CurrentString: Integer;
begin
if StringList = nil then
RaiseException('The StringList specified does not exist');
if StringList.Count = 0 then
RaiseException('The specified StringList is empty');
if StringList.Count = 1 then
RaiseException('The specified StringList does not contain multiple Strings');
Result := False;
CurrentString := 1;
Repeat
if (CompareStr(S, StringList.Strings[CurrentString]) = -1) then begin
Result := False;
end;
if (CompareStr(S, StringList.Strings[CurrentString]) = 0) then begin
Result := True;
end;
CurrentString := CurrentString + 1;
Until CurrentString > (StringList.Count - 1);
end;
返回true,如果指定的字符串是一樣的,在指定的字符串列表中的所有其他字符串。
否則,它返回False。
但是,問題是隻有在給定字符串列表已排序或其字符串沒有空格的情況下,它才能正確執行檢查。如果給定字符串列表中的任何字符串或所有字符串都有空格,則必須對其進行排序。否則,返回true,即使有非 - 等於串像Your Aplication
和Your ApplicationX.
例
這StringList的沒有在任何場所任何字符串:
var
TestingList1: TStringList;
TestingList1 := TStringList.Create;
TestingList1.Add('CheckNow');
TestingList1.Add('DontCheckIt');
if StringListStrCheck('CheckNow', TestingList1) = True
then
Log('All Strings are the same');
else
Log('All Strings are not the same.');
它正確返回False,可以在日誌的輸出消息中看到。
這StringList的在其字符串空間:
var
TestingList2: TStringList;
TestingList2 := TStringList.Create;
TestingList2.Add('Check Now');
TestingList2.Add('Check Tomorrow');
TestingList2.Add('Dont Check It');
if StringListStrCheck('Check Now', TestingList1) = True
then
Log('All Strings are the same');
else
Log('All Strings are not the same.');
但是,在這裏它返回True即使是那些字符串是不一樣的。
但是,在我按如下所示進行排序後,該函數正常工作,並按預期返回False。
TestingList2.Sorted := True;
TestingList2.Duplicates := dupAccept;
我想知道爲什麼這個函數失敗,如果給定的StringList的字符串有空格或給出的StringList沒有排序,也想知道我怎樣才能使這個功能,如果給定的StringList沒有失敗空格和/或給定的StringList沒有排序。
在此先感謝您的幫助。
謝謝你,它運作良好..... – GTAVLover
忽略以前的評論。 – GTAVLover
你的建議讓函數更好,但我仍然希望使用'Sorted = True'來處理StringLists,它們的字符串中有空格。 – GTAVLover