![]() |
|
Модераторы: Akina |
![]()
|
|
| PhantomM |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
Приветствую мастера!
проблемы с функцией замены Replace, задача сравнить два списка handle окон и выявить новые (запущенное между заполнениями списков) Я решил действовать через функцию Replace заменяя все совпадающие значения на "" при проверке кода всё работает нормально до момента передачи полученных значений из переменной в текстовое поле. я предположил что функция Replace записывает результат как массив и передаёт txt только первое значение, но все мои попытки работать с переменной как с массивом тоже ничего не дали..... И ещё почему то функция Replace не заменяет всё, если запустить сравнение без запуска программ она всёравно находит новые окна.... Мне очень важна эта функция так как в ближайшем будущем надо будет научить программу сравнивать на выявления и записи лишних строк из двух огромных файлов до 50 мб. Я тут написал упрощённый код посмотрите пожалуйста в чём может быть ошибка? А вот пример с моими комментариями пример Спасибо, Максим. Вот код
Модуль:
Это сообщение отредактировал(а) PhantomM - 9.3.2012, 17:22 Присоединённый файл ( Кол-во скачиваний: 4 )
Example.zip 3,06 Kb |
||||
|
|||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Напрасно. Разумнее было набить два массива, после чего выполнить их сортировку и поэлементное двухкурсорное сравнение.
Разумнее было просто почитать справку. http://msdn.microsoft.com/en-us/library/aa...2(v=vs.60).aspx -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| PhantomM |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
я побоялся что массивы займут много памяти, но наверно вернусь к этому варианту, правда как то ни разу не делал поиск в массивах, ну да разберусь....
Конечно разумнее, но я думал что форумы существуют для того что бы помочь друг другу или указать на ошибки, я конечно почитаю справку ещё раз, но поидее если человек спрашивает значит он в тупике, и наверно читал и справки и статьи... Но всёравно ОГРОМНОЕ СПАСИБО, вы единственный кто хоть что то написал. С уважением Максим |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
И, прочитав, что Replace возвращает строку, всё-таки начинает делать напрочь не соответствующие этому предположения? а вот не верю... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
А что мне остаётся думать? Я знаю что она должна передавать строку.. Но почему передаётся только первое значение строки???? Тоесть при отладке функция имеет конечное значение, например "Корова кошка верблюд велосепед" в текстовом поле получаем "Корова" и всё, хоть убейся!!! И никто объяснить в чём дело не может... Ни на одном форуме.... Если по логике, такие результаты могут быть только в массивах... Я это и "ПРЕДПОЛОЖИЛ" Я же не могу всего знать, думал может чего упустил. Но никто не знает, видимо и мне не судьба. Спасибо за ответ, с уважением Максим. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А символов перевода строки там, в строковой переменной, не завалялось? покажите debug.print того стринга, который передаёте в функцию, и результата её работы... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
Я тоже об этом подумал, поэтому в примере попробовал передавать значения в текст бокс с мультилайн я думаю что при символах перевода значения просто напечатались бы на новой сороке. debug.print я так понимаю это скрины процесса, если я правильно понял сейчас сделаю. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
Вот скрины:
1 - это значение переменной (текстовой) listsorte полученые из функции "listsorte= Replace(listsorte, List1.List(sh), "h")" Я тут что бы мне было нагляднее вместо "" поставил "h" что бы было видно замены. p\s присвоение происходит прямо во время цикла...... ![]() 2- переедаем значение сразу в текст значение текстового поля, вот тут мы и видим только одну "h" хотя в это же время istsorte содержит все свои значения как и раньше: ![]() 3 - результат выполнения самой программы: |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Надо использовать поиск по встроенной справке и читать эту самую справку, а не изобретать собственное понимание. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
Нет у меня родной справки vb, и честно сказать никогда небыло нужды в debug.print, но всегда приятно узнать что то новое
Прошу прошения, исправил скрин ниже: Это сообщение отредактировал(а) PhantomM - 13.3.2012, 17:15 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
http://msdn.microsoft.com/en-us/library/aa...60).aspx?ppud=4 Многочисленные преобразования, которые выполняются при размещении поста, убивают его ценность. Вместо debug.print всей переменной покажите ASC() первых 16 символов во всех трёх случаях:
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
коды символов до обработки функцией
77 83 67 84 70 73 77 69 32 85 73 68 101 102 97 117 результат замены на символ h- 104 118 108 99 0 104 0 104 0 118 108 99 0 104 0 104 0 значение текстового поля 118 108 99 Ну причину благодаря вам мы вроде нашли, если не ошибаюсь "0" это конец строки, но всётаки этот символ вставляет функция Replace, он появляется исключительно после обработки переменной... Но почему она так делает? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Вот этого дела - побольше... чтобы было захвачено минимум 2 строки целиком. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| PhantomM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.3.2012 Репутация: нет Всего: нет |
77 83 67 84 70 73 77 69 32 85 73 68 101 102 97 117 108 116 32 73 77 69 77 83 67 84 70 73 77 69 32 85 73 68 101 102 97 117 108 116 32 73 77 69 193 224 235 224 225 238 235 234 224 80 104 97 110 116 111 109 77 57 57 57 64 115 105 112 110 101 Но вроде ничего странного не заметил. Это сообщение отредактировал(а) PhantomM - 14.3.2012, 09:36 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Тваюмать! А то что у тебя одна хрень - это листбокс, а вторая текстбокс - это ничего? CHR(0) - это разделитель элементов листбокса. И они имеют место быть там изначально, Replace тут никаким боком, не надо на функцию гнать. Так что либо замени текстбокс на другой листбокс, либо перед запихиванием результата в текстбокс замени CHR(0) на VBNewLine. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |