Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Функция, вырезающая строку между двумя разделителями   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.012 c
1-1124284424
zorik
2005-08-17 17:13
2005.09.11
Аналог кнопки "Выполнить" в Windows (как организовать)


1-1124792531
TikTanik
2005-08-23 14:22
2005.09.11
Обьединение классов! :)


3-1122888728
erika
2005-08-01 13:32
2005.09.11
Объединение запросов


3-1122486388
Djek
2005-07-27 21:46
2005.09.11
Добавление значений в список Items в ComboBox


4-1122030040
Layner
2005-07-22 15:00
2005.09.11
Как закрыть приложение из батника





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский