![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Суть задачи:
Есть строка И есть строка-фильтр Нужно удалить из строки все элементы, которые есть в строке-фильтре: Но почему-то только первый символ фильтруется, а дальше все переносится в новую строку без разбору Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Может лучше использовать для строк строковые команды.
Код:
Последний раз редактировалось macomics; 21.06.2022 в 23:39. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Я уже не пойму этих приколов ассемблера - просматриваю код, вроде ошибок нет, но работает неправильно
Поменял местами два оператора (которые можно, по идее, в любом порядке использовать) - заработало |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Для того, чтобы точно понять что происходит, при отладке стоит открывать окно Ассемблера (Вид->Отладка->Ассемблер), а не пользоваться редактором и точками останова.
В редакторе всегда написан текст, а в окне Ассемблера уже преобразованный код обратно в текст. Что позволяет точно находить просчеты. |
![]() |
![]() |
![]() |
#5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
macomics, а что у вас за компилятор? А то у меня в Дельфи 7 пришлось чуть-чуть ваш код менять, так как параметры передавались через регистры (fastcall), соответственно, к моменту использования уже оказывались подпорчены. А еще почему-то наивно переписанный алгоритм отрабатывает в 13 раз быстрее (может быть где-то ошибся, но результат работы совпадает):
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 22.06.2022 в 02:37. |
![]() |
![]() |
![]() |
#6 | |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]() Код:
Цитата:
Последний раз редактировалось macomics; 22.06.2022 в 05:41. |
|
![]() |
![]() |
![]() |
#7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
Круто
![]() Значит просто повезло, что отработало с одинаковым результатом. Поставил FillChar(f, SizeOf(f), 0);, стало в 5 раз быстрее (вместо 13), чем ассемблер.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
А можно посмотреть на содержимое окна Ассемблер у вас (FilterStr255_2).
У меня на Lazarus/FreePascal добавляется к Ассеблерному варианту еще длиннющий блок создания строк Result и f с вызовами дополнительных конструкторов. Что удивительно, но в такой же функции на Pascal этих конструкторов нету. Возможно из-за применения SetLength или других функций. Последний раз редактировалось macomics; 22.06.2022 в 15:38. |
![]() |
![]() |
![]() |
#9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
macomics, вот:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#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 |