Функция fetch - непонятности
Добавлено: Вт июл 14, 2020 12:44 pm
Вот небольшой код:
И да, в случае, если в качестве строки указана текстовая константа, то выдаётся ошибка:
Код: Выделить всё
Вывод:var sIP:string;
begin
sIP:='192.168.78.186';
mLogScript(IntToStr(length(sIP)),'');
mLogScript(fetch(sIP,'.'),'');
mLogScript(sIP,'');
end.
Код: Выделить всё
С первыми двумя строчками mLogScript нет вопросов - всё как и ожидается. Но третья строка выявляет совсем неожидаемое поведение - она не просто вырезает подстроку и выдаёт её в качестве значения функции, она изменяет значение самой изначальной строки! Просто нелогичность этого видна на примере процедуры delete - вот она изменяет саму строку, вырезая из неё лишнее. Но fetch - это ФУНКЦИЯ! У неё есть значение, результат... Сейчас получается просто дублирование - она и в качестве значения выдаёт результат и ещё оригинальную строку обрезает, хотя если надо последнее, то всегда можно указать [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"): Скрипт выполнен успешно.
Код: Выделить всё
s:=fetch(s,y)
И да, в случае, если в качестве строки указана текстовая константа, то выдаётся ошибка:
Код: Выделить всё
Первая строка как истинная функция обрабатывается нормально, а вторая - "[Error]: Variable Expected".mLogScript(IntToStr(length(sIP)),'');
mLogScript(fetch(sIP,'.'),'');