Вот небольшой код:
Код: Выделить всёvar sIP:string;
begin
sIP:='192.168.78.186';
mLogScript(IntToStr(length(sIP)),'');
mLogScript(fetch(sIP,'.'),'');
mLogScript(sIP,'');
end.
Вывод:
Код: Выделить всё[13:21:46] (Log "Temp"): 14
[13:21:46] (Log "Temp"): 192
[13:21:46] (Log "Temp"): 168.78.186
[13:21:46] (Run "Temp"): Время выполнения скрипта: 4 мс
[13:21:46] (Run "Temp"): Скрипт выполнен успешно.
С первыми двумя строчками mLogScript нет вопросов - всё как и ожидается. Но третья строка выявляет совсем неожидаемое поведение - она не просто вырезает подстроку и выдаёт её в качестве значения функции, она изменяет значение самой изначальной строки! Просто нелогичность этого видна на примере
процедуры delete - вот она изменяет саму строку, вырезая из неё лишнее. Но fetch - это ФУНКЦИЯ! У неё есть значение, результат... Сейчас получается просто дублирование - она и в качестве значения выдаёт результат и ещё оригинальную строку обрезает, хотя если надо последнее, то всегда можно указать
И да, в случае, если в качестве строки указана текстовая константа, то выдаётся ошибка:
Код: Выделить всёmLogScript(IntToStr(length(sIP)),'');
mLogScript(fetch(sIP,'.'),'');
Первая строка как истинная функция обрабатывается нормально, а вторая - "[Error]: Variable Expected".