Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Удаление комментарий Добавлено: 21.03.04 20:40  

Автор вопроса:  Александр | ICQ: 204034 

Как написать функцию, удаляющую комментарии (VB'шные) из текста?

Помогите, запарился уже...

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 21.03.04 20:49

Я знаю, это очень просто... Но меня в последнее время очень глючит как и мой инет... :(

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 21.03.04 22:51

Дык смотрим всю строку, на наличие 1-го символа " ' ", а по нахождении - удаляем всю строку, а если разбить предусмотрительно весь текст на массив по vbCrLf, то попросту эту строку не обрабатывать и все...

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 21.03.04 22:58

2sne: забыл еще про многострочные комментарии (которые через знак подчеркивания), про апострофы в строках, про REM (да, есть и такие, которые используют rem!)

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 21.03.04 23:07

Хм... действительно... а я считал что знак " _" работает только в отношении кода... а он еще и комменты могет переносить...

Ну да... помню еще те времена, когда Rem писал в своих прогах :) Но это было действительно оччень давно :)

Ответить

Номер ответа: 5
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #5 Добавлено: 22.03.04 07:46

А можно функцией?

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 22.03.04 10:59

Так, именно таковую и надо написать, которая бы "просматривала" весь текст на наличие в начале строки (разкмеется не считая пробелов) либо " ' ", либо "Rem", далее просматривала окончание строки, и в зависимости от имеющегося там 2-х символов " _", принимала решение удалять-ли следующую...

На мой взгляд при таком раскладе, проще всего разбить весь текст на строки и поместить их в массив (Split())...

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 22.03.04 17:28

Позволю себе повредничать :)

Во-первых, просматривать на наличие апострофа надо не начало строки, не считая пробелов, а всю строку, так как ничто не мешает ему находиться в середине строки (про rem не помню), во-вторых, обязательно надо иметь переменную, считающую вложенность в кавычки вне комментариев, так как ничто не мешает находиться апострофу в строках.

Ответить

Номер ответа: 8
Автор ответа:
 2San



Вопросов: 11
Ответов: 68
 Профиль | | #8 Добавлено: 22.03.04 21:53
А если апостроф в кавычках? Например: MsgBox "Наличие 'МК44-м3' не
предусмотренно!"
Вообще гемор!!!

> Origin: Легко работать как лошадь, трудно как японец

Ответить

Номер ответа: 9
Автор ответа:
 Clubber



Вопросов: 1
Ответов: 18
 Профиль | | #9 Добавлено: 22.03.04 23:06

удаляй всё что правее символа ' , используя конструкцию типа right(str,len(str)-1)...конструкции как написано выше редкость...можно и ручками подправить чёнить

либо смотреть на незакрытый "...

Ответить

Номер ответа: 10
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #10 Добавлено: 23.03.04 06:46

Во блин... Просишь о помощи, а они еще больше грузят... :(

Так что слабо написать эту функцию, а?

Ответить

Номер ответа: 11
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #11
Добавлено: 23.03.04 08:32
:) Ну кому хочется делать чужую работу? Особенно в России...
Функция действительно сложновата получится...

> во-вторых, обязательно надо иметь переменную, считающую вложенность в кавычки вне комментариев
ИМХО, тут достаточно Boolean... Находим двойную кавычку - переключаем
флаг.. Находим одинарную - если флаг=True, то отрезаем всё до конца
строки, если False, идём дальше.

Насчёт "_" - если нашли комментарий, но он заканчивается на "_", то
просто тащимся дальше до тех пор, пока не встретим строчку, в конце
которой нет "_".


А вот кто подскажет, как это с помощью регулярных выражений сделать?

Ответить

Номер ответа: 12
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #12
Добавлено: 27.03.04 19:47

Держи, от сердца отрываю.

Только с одним условием.

Найдёшь ошибку - с тебя пример.

===

Это для PB. Сам переделай. Там несложно.

---

Function Editor_GetLineText Alias "Editor_GetLineText"(ByVal LineNumber As Long) Export As String

Dim LineText As String

LineText=edmTxtGetLine(ghEdit, LineNumber)

Dim DQ1 As Integer, DQ2 As Integer, REM1 As Integer

Dim SearchMore As Integer:SearchMore=%TRUE

While IsTrue(SearchMore)

DQ1=InStr(DQ2+1,LineText,Chr$(34))

If DQ1>0 Then

DQ2=InStr(DQ1+1,LineText,Chr$(34))

End If

REM1=InStr(-1,UCase$(LineText),"REM")

If REM1=0 Then REM1=InStr(-1,LineText,"'")

If REM1>DQ1 And REM1

If DQ1=0 Or DQ2=0 Then SearchMore=%FALSE

Wend

If REM1>0 Then LineText=Left$(LineText,REM1-1)

Function=LineText

End Function

Ответить

Номер ответа: 13
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #13
Добавлено: 27.03.04 20:07

Мало того что форум тормознутый, так он ещё и глюкавый.

>If REM1>DQ1 And REM1

Должно быть так:

If REM1>DQ1 And REM1

Но почему то обрезалось.

===

Вместо "instr(-1," используй instrrev. IsTrue думаю сам допрёшь.

Ответить

Номер ответа: 14
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #14 Добавлено: 27.03.04 20:54

Если это надо делать НЕ ПРОГРАММНО, то сгодятся продукты типа CodeSmart от AXTools.

Вообще это полезная штука для разработчика.

Ответить

Номер ответа: 15
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #15 Добавлено: 28.03.04 09:48

Comanche, дак я хочу убирать комменты не в VB, а в строках моего приложения...

А CodeSmart у меня стоит.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам