|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.06.2022, 23:01 | #1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Где ошибка? Очистка строки от лишних символов
Суть задачи:
Есть строка И есть строка-фильтр Нужно удалить из строки все элементы, которые есть в строке-фильтре: Но почему-то только первый символ фильтруется, а дальше все переносится в новую строку без разбору Код:
Код:
|
21.06.2022, 23:26 | #2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Может лучше использовать для строк строковые команды.
Код:
Последний раз редактировалось macomics; 21.06.2022 в 23:39. |
22.06.2022, 00:14 | #3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 653
|
Я уже не пойму этих приколов ассемблера - просматриваю код, вроде ошибок нет, но работает неправильно
Поменял местами два оператора (которые можно, по идее, в любом порядке использовать) - заработало |
22.06.2022, 01:58 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Для того, чтобы точно понять что происходит, при отладке стоит открывать окно Ассемблера (Вид->Отладка->Ассемблер), а не пользоваться редактором и точками останова.
В редакторе всегда написан текст, а в окне Ассемблера уже преобразованный код обратно в текст. Что позволяет точно находить просчеты. |
22.06.2022, 02:35 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
macomics, а что у вас за компилятор? А то у меня в Дельфи 7 пришлось чуть-чуть ваш код менять, так как параметры передавались через регистры (fastcall), соответственно, к моменту использования уже оказывались подпорчены. А еще почему-то наивно переписанный алгоритм отрабатывает в 13 раз быстрее (может быть где-то ошибся, но результат работы совпадает):
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 22.06.2022 в 02:37. |
22.06.2022, 05:18 | #6 | |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Код:
Цитата:
Последний раз редактировалось macomics; 22.06.2022 в 05:41. |
|
22.06.2022, 13:43 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Круто
Значит просто повезло, что отработало с одинаковым результатом. Поставил FillChar(f, SizeOf(f), 0);, стало в 5 раз быстрее (вместо 13), чем ассемблер.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
22.06.2022, 15:33 | #8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А можно посмотреть на содержимое окна Ассемблер у вас (FilterStr255_2).
У меня на Lazarus/FreePascal добавляется к Ассеблерному варианту еще длиннющий блок создания строк Result и f с вызовами дополнительных конструкторов. Что удивительно, но в такой же функции на Pascal этих конструкторов нету. Возможно из-за применения SetLength или других функций. Последний раз редактировалось macomics; 22.06.2022 в 15:38. |
22.06.2022, 15:43 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
macomics, вот:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
22.06.2022, 16:11 | #10 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Так и думал. Вот так он выделяет строку, а у меня такая же фигня, но только в Pascal версии. Ассемблерная выделяет строку непонятно где через конструкторы
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление лишних символов | optimi | Microsoft Office Excel | 12 | 03.08.2016 08:28 |
Удаление лишних символов из Memo | NSV | Общие вопросы Delphi | 10 | 23.11.2012 08:38 |
удаление лишних символов | Den1zzkkk0 | SQL, базы данных | 2 | 27.01.2012 13:27 |
удаление из строки лишних символов | maxefficiently | Общие вопросы Delphi | 2 | 01.03.2011 08:53 |
Вывод без лишних символов | Billy Spleen | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 14 | 26.01.2010 12:47 |