Главная страница
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.57 MB
Время: 0.034 c
4-1122289098
Maverick
2005-07-25 14:58
2005.09.11
Перехват действия программы


3-1122642449
Vn
2005-07-29 17:07
2005.09.11
Принудительный сброс измененных данных на диск


1-1124297309
Ivanov
2005-08-17 20:48
2005.09.11
Работа с .rar


14-1124100382
KilkennyCat
2005-08-15 14:06
2005.09.11
Нет ли у кого книги по работе с БД в Делфи в електронном виде?


5-1097781422
Igor_
2004-10-14 23:17
2005.09.11
Свой Button!!!