откату с помощью Delphi XE-5 FireMonkey мобильногоинкрементный строка
У меня есть строка (путь), который выглядит следующим образом
host domain and node here\\something1\\something2\\something3\\something4\\something5
Мне нужна функция, которая удаляет каждую часть с каждым вызовом. например, когда вызвать функцию в первый раз, он не будет удалить «\ something5» оставив строку как
something1\\something2\\something3\\something4
function CountOccurences(const SubText: string;
const Text: string): Integer;
begin
if (SubText = '') OR (Text = '') OR (Pos(SubText, Text) = 0) then
Result := 0
else
Result := (Length(Text) - Length(StringReplace(Text, SubText, '', [rfReplaceAll]))) div Length(subtext);
end; {Robert Frank}
function IncrementalBackOff(aPath: String): String;
var
I: Integer;
Found: Boolean;
begin
result:= aPath;
if (CountOccurences('\\', result) > 1) then
begin
for I:= Length(result) downto 1 do
begin
if (result[I] <> '\') then
Delete(result, I, 1)
else
begin
Delete(result, I, 1);
Delete(result, I-1, 1);
end;
end;
end;
end;
ПРИМЕЧАНИЕ: Мне нужно всегда держать первый участок (т.е. никогда удалить '\\' something1
host domain and node here\\something1
Таким образом, функция должна вернуть строку remainng каждый раз
У вас действительно есть двойная обратная косая черта? Считаете ли вы использование функции split? –
[LastDelimiter] (http://docwiki.embarcadero.com/Libraries/XE5/en/System.SysUtils.LastDelimiter) будет работать здесь хорошо. –