![]() |
|
Модераторы: Akina |
![]()
|
|
| XPurple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Написал программу, на скорую руку, для вырезания символа из файла. Пока много недочетов: плохая логика, сумбурный код и т.д. Мне бы хотелось получить ответ на вопрос по функционалу. Другими словами, потестите, кому интересно, на предмет ошибок.
Вот код программы
--------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ты в своем уме - читать-писАть файлы ПОБАЙТОВО??? да еще побайтово же сравнивать??? на файле размером в гигабайт твоя программа задумается до Нового года... это при том что в начале распрекрасно пользуешь FSO... организуй нормальное потоковое чтение, используй буфер чтения размером не менее 4 кб (оптимум - 32 или 64 кб), символы вырезай тривиальным Replace.
И потом - с какой целью размещен тут код? какова нужность и полезность этой программы? где она востребована? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| XPurple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Я честно говоря во всех примерах только и видел побайтовое считывание в режиме Binary, думал по-другому в VB и нельзя. Вот как, оказывается.
В какой раздел подобного рода вещи размещают ? Я просто не знал, честно говоря, куда обратиться: рискнул сюда. Переместите в нужный раздел ,куда сочтете правильным. p.s. Писалось для себя, для вырезания перевода строки из текста для импорта в shell-скрипты p.p.s Программа -сырая, я сам вижу и мне она самому не нравится ; но лучше сейчас по(л)учить от знающих людей, чем потом исправлять себе руки. Добавлено. Я тут подумал над вашими словами. У меня культуры программирования, похоже, еще нет. Выкладывать свои исходники, причем не самого высокого качества -это плохой тон, сродни вывешиванию во дворе дырявых носков ? Я угадал ? Это сообщение отредактировал(а) XPurple - 6.6.2006, 10:43 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
XPurple, налепи на форму 3 TextBox'a, Dirlistbox, filelistbox, drivelistbox, Command1 - "Открыть", Command2 - "Сохранить", CommonDialog1 - вставь код:
-------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
XPurple, дурной тон - вывалить весь исходник целиком, да еще без комментариев. Достаточно было дать существенный участок кода (Function Cut_Symbols), указав что именно она принимает и что именно отдает и откомментировав код.
Да, еще одно - никогда (слышишь, НИКОГДА!) не делай так чтобы исполняемый код процедуры/функции заходил в обработчик ошибки той же процедуры/функции. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| XPurple |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Voldemar2004,
Что то есть, действительно общее. Интересные вы ребята, каждый раз узнаешь что-то новое. Как я без программирования раньше жил ? Akina Ладно, спасибо, я все понял. p.s. Я стараюсь в меру сил следовать вашим советам. Я это ценю, поверьте мне.
Не понял (только догадываюсь), про какое место вы говорите, про это ?
Вы же сами меня учили, что область действия обработчика ошибок до конца процедуры. Добавлено. Пока писал, понял, что вы имели ввиду. А так нельзя делать ? К чему это может привести ? Это сообщение отредактировал(а) XPurple - 7.6.2006, 12:53 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
||||
|
|||||
| Тутанхамец |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Разбираться во всем исходнике я не стал, тем более, что без комментариев не слишком уверен, что правильно въехал, как оно работает.
По мелочи типа придирки: 1)
UCASE и LCASE - приводят текст к верхнему регистру и нижнему. Для всех текстовых функций есть двойники с "$" на конце - эти функции возвращают результат типа string. Без доллара - возвращают типа variant, который работает медленее. Чаще всего на скорость это влияет незаметно, но всё-таки полезно знать. 2)
3)
Опять же, заметно это не повлияет на скорость. Но ты понимай, что у тебя при каждом изменении текста будет выполняться одна и та же работа. Хотя операции с текстом у тебя выполняются по нажатии какой-то кнопки. Именно в процедуре этого нажатия ты мог бы запихивать в Symbol содержимое text1 - один раз, а не невесть сколько... Ну, про файл тебе уже сказали... Глобальных переменных что-то многовато. Те, которые используются только в одной процедуре, лучше в этой процедуре и объявлять. И используй один стиль объявления. Зачем тебе где-то интегер объявлять через "%", а где-то через as integer... Добавлено @ 13:05 Да, и FSO as object - плохо. Либо уж variant (что тоже плохо), либо подключаешь Microsoft Scripting Run-Time в Project-References и объявляешь, как Scripting.FileSystemObject. |
||||||||
|
|||||||||
| XPurple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Не получается с помощью Replace вырезать специальные символы (видимые символы вырезаются без проблем), подскажите: как это сделать ? --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| XPurple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
А как сосчитать из файла спецсимволы и вырезать с помощью Replace ?
--------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 3 Всего: 16 |
Что значит сосчитать? Это всмысле посчитать? Тогда не понимаю зачем это в данной задаче. Если же это считать, то переменную считываешь файл и применяешь к ней Replace. Постарайся задать вопрос иначе, в этом виде он непонятен, чтобы попробовать помочь тебе.
|
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Ну так например:
-------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Вот например, как вырезать все символы переноса строки:
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| XPurple |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 4.5.2006 Где: Челябинск Репутация: 1 Всего: 1 |
Я изначально эту задачу реализовал через побайтовое чтение в режиме Binary. Мне сказали, что это якобы долгий процесс, был предложен вариант с Replace. Но во всех встреченных мне примерах приводятся описания либо для чтения данных из файла, либо отдельно для replace.
Я подумал, раз мне нужно найти в файле спецсимвол и удалить его, то следует открывать файл в режиме Binary. Но для нахождения его и примения к нему функции Replace - возникла сложность, т.к. в этом режиме я не понял, как находить в строке символ "0Dh" с помощью Line Input. Если кратко, требуется следующее: 1. Открыть файл. 2. Найти в файле все спецсимволы 0dH 3. Записать данные (уже без спецсимволов) в другой файл.
Это для видимого символа, а как сделать для спецсимвола ? Это сообщение отредактировал(а) XPurple - 16.6.2006, 11:08 --------------------
Кто никогда ни о чем не спрашивает: тот либо знает все, либо не знает ничего. Не помню, кто сказал, может быть, я (с) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |