Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизФункция, вырезающая строку между двумя разделителями Найти похожие ветки
← →
Anatoly Podgoretsky © (2005-08-22 20:47) [40]Piter © (22.08.05 16:03) [31]
Anatoly Podgoretsky © (22.08.05 15:23) [27]
Найти начало и записать его в переменную K
Если K>0 (здесь постановка отсутствует
Вероятно, имелось в виду K<1.
Да именно так.
напишите
Еще чего, нет такого желания просто так делать, будет конкретная задача, то естественно напишу, а просто так тратить время не могу, есть более насущные задачи. Тем более при отсутствии точной постановки задачи.
← →
Piter © (2005-08-22 21:27) [41]Ок, ок, не хотите - как хотите.
Одна мысля только - если вы, Анатолий, такой занятой, то не понимаю, чего вы участвуете в десятке форумов, в ФИДО и еще черт знаем в чем :)))
Уверен, это отнимает много часов КАЖДЫЙ день :)
← →
Anatoly Podgoretsky © (2005-08-22 21:36) [42]Piter © (22.08.05 21:27) [41]
Занятой или нет не важно, я могу заняться и посторонней проблемой если она представит для меня интерес, ну например новихной. Данная проблема мне не интересна. Максимус что могу, так это пару замечаний или предложений, если сочту нужным.
А в форумах участвую по многим причинам, главная из которых развлечение, но и отлов интересных сообщений, которые могут пригодится, не могу же я все проверять самостоятельно, вот и использую совместный опыт. Хоть КПД и низок, но всегда что то есть очень полезное. Ну а время, не секрет, начиная с 6:30 до 24:00. Интернет постоянный, не лимитированый, быстрый. Компьютеры постоянно включены. Сервер вообще никогда не выключается.
Вот пишу в последнее время очень мало.
← →
ev (2005-08-22 22:03) [43]можно еще так :)
str:=TStringList.Create;
str.Delimiter:="|";
str.DelimitedText:="asd|ddd|s|dd";
← →
Sha © (2005-08-23 08:43) [44]> Leonid Troyanovsky © (22.08.05 16:36) [36]
> 20 это серьезно :)
> Правда, пока непонятно, за счет, собс-но, чего.
Эа счет использования Паскаля и основного цикла,
в котором многократно вызываются внешние процедуры
Length и StrLComp.
Вместо SetString часто эффективнее использовать
комбинацию SetLength + Move.
← →
Leonid Troyanovsky © (2005-08-23 15:24) [45]
> Sha © (23.08.05 08:43) [44]
> > 20 это серьезно :)
> > Правда, пока непонятно, за счет, собс-но, чего.
> Эа счет использования Паскаля и основного цикла,
> в котором многократно вызываются внешние процедуры
> Length и StrLComp.
Ну, Piter тоже пользовал не асм.
И если процедуры были внутренние, оно б сильно не изменилось.
Значит, вывод сделаем следующий:
за счет вызова процедур (сам вызов и операции с регистрами).
Т.е., ускориться можно, например, вписав вместо StrLComp
пару собс-ных циклов.
> Вместо SetString часто эффективнее использовать
> комбинацию SetLength + Move.
Трудно согласиться, бо противоречит первому утверждению.
--
Regards, LVT.
← →
Sha © (2005-08-23 16:54) [46]> Leonid Troyanovsky © (23.08.05 15:24) [45]
> Ну, Piter тоже пользовал не асм.
У него как раз все циклы на асме во внешней PosEx.
> И если процедуры были внутренние, оно б сильно не изменилось.
Естественно, это позволило только не передавать параметры.
Речь о том, чтобы свести количество вызовов любых процедур
к минимуму. У Piter"а их всего 3, а у тебя ~Length(Src)*2
> > Вместо SetString часто эффективнее использовать
> > комбинацию SetLength + Move.
> Трудно согласиться, бо противоречит первому утверждению.
Если не ошибаюсь, SetString всегда приводит к выделению новой
строки. А так как строка-результат функции всегда уникальна,
то обычно более чем в половине случаев комбинация
SetLength + Move приводит к обрезанию старого результата,
что увеличивает эффективность при коротких результатах.
← →
Leonid Troyanovsky © (2005-08-23 17:04) [47]
> Sha © (23.08.05 16:54) [46]
> то обычно более чем в половине случаев комбинация
> SetLength + Move приводит к обрезанию старого результата,
Старого, это какого?
--
Regards, LVT.
← →
Jeer © (2005-08-23 17:18) [48]Leonid Troyanovsky © (23.08.05 17:04) [47]
Надо понимать, предыдущего:)
← →
Leonid Troyanovsky © (2005-08-23 17:27) [49]
> Jeer © (23.08.05 17:18) [48]
> Надо понимать, предыдущего:)
Неее. Оно нам негоже, бо недокументировано.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2005-08-23 17:34) [50]
> Jeer © (23.08.05 17:18) [48]
> Leonid Troyanovsky © (23.08.05 17:04) [47]
>
> Надо понимать, предыдущего:)
Да, и, вообще, если строка-результат всегда уникальна,
то как может случиться, что она содержит результат
предыдущего вызова.
--
Regards, LVT.
← →
Sha © (2005-08-23 17:47) [51]> Leonid Troyanovsky ©
> Старого, это какого?
Того, что осталься от предыдущего вызова.
> Неее. Оно нам негоже, бо недокументировано.
Документировано в исходниках.
Память под строку-результат выделяет вызывающая функция.
Если делается несколько вызовов, старый результат
замещается новым.
> Да, и, вообще, если строка-результат всегда уникальна,
Уникальность строки означает, что ее счетчик ссылок равен 1.
> то как может случиться, что она содержит результат
> предыдущего вызова.
Как описано выше :)
--
Best regards,
Aleksandr
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.011 c