Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1124291367
Pat
2005-08-17 19:09
2005.09.11
Передать в макрос параметр


14-1124044520
Е-клмн
2005-08-14 22:35
2005.09.11
Как на английский перевести слово «шняга»?


14-1124072493
Думкин
2005-08-15 06:21
2005.09.11
15 августа! С днем ребята


1-1124453135
vigo
2005-08-19 16:05
2005.09.11
Как поменять Font.Color TEdit a (при Enabled = False)?


6-1116958843
Dj_Dreamer
2005-05-24 22:20
2005.09.11
Реализация IPSec в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский