Как проверить, заканчивается ли строка другим (EndsWith) в Inno Setup - PullRequest
1 голос
/ 30 апреля 2020

Мне нужно написать логи c в какой-то функции Inno Setup, которая проверяет, заканчивается ли строка другой.

Можно ли использовать для этого функции StrUtils Pascal (EndsWith) ?

function NextButtonClick(CurPageID: Integer): Boolean;
var
  dir_value: String; app_name: String; 
begin
  if CurPageID = wpSelectDir then
    begin
      dir_value := "C:\work\ABC"
      app_name :=  "ABC"

      { I need to write a logic here to check if dir_value ends with app_name }
    end;
end;

1 Ответ

1 голос
/ 30 апреля 2020

В Inno Setup нет EndsWith.

Но вы можете легко реализовать это:

function EndsWith(SubText, Text: string): Boolean;
var
  EndStr: string;
begin
  EndStr := Copy(Text, Length(Text) - Length(SubText) + 1, Length(SubText));
  { Use SameStr, if you need a case-sensitive comparison }
  Result := SameText(SubText, EndStr);
end;

Хотя в вашем случае вам действительно нужно что-то вроде этого:

function EndsWithFileName(FileName, Path: string): Boolean;
begin
  Result := SameText(FileName, ExtractFileName(Path));
end;

Для SameTextSameStr) требуется Inno Setup 6. В более старых версиях вы можете заменить их с CompareTextCompareStr).

...