![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| PsiMagistr |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Доброго Времени Суток, все начинающие и зубры.
По причине небывалой жары проектирование моей игрушки было отложено до наступления прохлады. Однако же энергия требовала выхода и я почитав инетфорумы набрел на следующую популярную проблему: Необходимо удалить из строки все одинаковые символы. Чтобы не один символ в строке не повторялся. Была скажем строка: "рододендрон", стала "роден". Поскольку "Рассказы о Шерлоке" Холмсе разбудили во мне призраки дедуктивного мышления, потратил я на решение этой задачи одну ночь. Ночью лучше всего думается, к тому же никто не мешает. Код отличается несовершенством, но вполне работоспособен может пригодиться и вам. Комментировать пока не буду:
Пример использования. Т - объект типа TEdit. Button1 - TButton.
Это сообщение отредактировал(а) PsiMagistr - 30.6.2010, 16:58 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
||||
|
|||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Я бы рекомендовал вам не использовать много функций типа Delete и Pos, т.к. они требуют определенных вычслительных затрат, а взять и сделать копирование одной строки в другую с проверкой наличия копируемого символа в строку где копируем, на мой взгляд такой код будет более эффективным как по времени выполнения так и по памяти.
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
DarkProg, Большое спасибо за совет. Теперь мне кажется, что можно обойтись даже без Copy.
-------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Всегда пожалуйста, обращайтесь
Я просто как-то задумался насчет того что у меня тормозит прогу(конкретно у меня прога была с очень большой работой по парсингу строк), и начал прикидывать, логически подумал на эту тему и пришел к выводу что тормозит большой вызов процедур типа copy, delete, pos и т.п., потом подумал как обойтись без них и как результат программа увеличила свое быстродейсвие(если память не изменяет) в 5 раз(вот это был для меня шок, я надеялся что будет хотя бы выйгрыш в пару минут, а тут с 5 минут до 1, хотя засекал по часам, но все же результат был феноменальным Добавлено через 20 секунд Теперь вот делюсь опытом -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
ололо. а stringreplace(s,'c','',[]) ни о чём не говорит?
|
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Ни о чем, поясняйте что это и зачем. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Proxin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
извиняйте, от жары с мозгами совсем плохо. хотя, на основе stringreplace можно построить функцию просчёта количества одинаковых символов и все их чистить.
|
|||
|
||||
| PsiMagistr |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Сварганил с утречка новый вариант. Вообще простой как правда. Никаких тебе двойных while.
Proxin, прав это все жара виновата. ))) Это сообщение отредактировал(а) PsiMagistr - 1.7.2010, 09:12 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |