Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Что-то VB гонит.... Или я уже сдурел :) Добавлено: 05.03.05 08:11  

Автор вопроса:  Александр | ICQ: 204034 
Захотелось мне сделать поддержку еще одного пользовательского макроса:
Типа вот этого: <@time="long time"> выдает время (по моим настройкам
компа) в формате hh:mm:ss. Но эта зараза читает как-то криво текст:


mStart = InStr(1, .Text, "<@time=" & Chr(34), vbTextCompare) ' Ia?aei iae?ina
If mStart > 0 Then
    mFinish = InStr(mStart, .Text, Chr(34) & ">", vbTextCompare) ' Eiiao iae?ina
    If mFinish > 0 Then
        mTimeTextFormat = Trim(Mid(.Text, mStart, mFinish))
        mTimeFormat = Mid(.Text, mStart + 8, mFinish - 2)
        mTimeFormat = Mid(.Text, 1, InStrRev(mTimeFormat, Chr(34) & ">"))
        Text = Replace(.Text, mTimeTextFormat, Format(Time, mTimeFormat))
    End If
End If


Вот после второго присвоения значения к mTimeFormat от (по MsgBox'у)
не выдает того long time, а выдает что-то типа: 04,93.2235
Так же задавался формат hh:mm:ss, там такой же результат.
Да, если это важно, то я читаю текст из файла, гружу его в текстбокс,
а затем уже применяю шаблоны. Но, почему-то, вставляется-то верный
текст.

Что делать? Мне не хочется на каждый вид времени вводить свой
макрос... Почему глючит Васька? Или так нельзя делать в нем (сумнёваюсь)?

З.Ы. Но если заменить строчку замены в тексте на вот эту:
.Text = Replace(.Text, mTimeTextFormat, mTimeFormat)
то все работает как по часам :)) Что за дела? Я же ничего не заменял...

Ответить

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

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



Вопросов: 87
Ответов: 459
 Профиль | | #1 Добавлено: 05.03.05 19:54
Попробуй это:
Private Sub Form_Load()
    Dim st As String
    
    st = "<@time=" + Chr$(34) + "long time" + Chr$(34) + ">"
    Debug.Print st
    
    mStart = InStr(1, st, "<@time=" & Chr$(34), vbTextCompare)
    If mStart > 0 Then
        mFinish = InStr(mStart, st, Chr$(34) & ">", vbTextCompare)
        If mFinish > 0 Then
            mTimeTextFormat = Trim(Mid(st, mStart + 8, mFinish - mStart - 8))
            Debug.Print Replace$(st, mTimeTextFormat, Format(Time, mTimeFormat))
        End If
    End If
    
End Sub

:))

Ответить

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



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

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #2 Добавлено: 08.03.05 11:52
Commanche, респект и пасиба! :)) Вроде заработало...

Ответить

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



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

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #3 Добавлено: 14.03.05 08:29
Не, не катит.. :)) Все получается, но чуть не то что надо.
Например, есть такой файл с шаблоном:

<@timedate> - текущая дата и время
<@date> - текущая дата
<@time> - текущее время
<@enver> - версия Easy Note
<@username> - имя пользователя
<@compname> - имя компа
<@winver> - версия windows
<@time="long time"> - текущее время, заданное пользовательским форматом


Там заменяется все, что ниже <@time="long time"> (с этим макросом
вместе) на время по заданному формату (а мне это не надо). Вот код:

    Dim st As String
    Dim mStart As Long, mFinish As Long, mTimeFormat As String, mTimeTextFormat As String, mMacros As String
    st = Text1.Text
    mStart = InStr(1, st, "<@time=" & Chr$(34), vbTextCompare) - 1
    MsgBox mStart
    'Text1.SelStart = mStart - 1
    'Exit Sub
    If mStart > 0 Then
        mFinish = InStr(mStart, st, Chr$(34) & ">", vbTextCompare)
        If mFinish > 0 Then
            mMacros = Mid(st, mStart + 1, InStr(mStart, st, Chr(34) & ">", vbTextCompare))
            mTimeTextFormat = Mid(st, mStart + 9, mFinish - mStart - 9)
            Debug.Print Replace$(st, mTimeTextFormat, Format(Time, mTimeFormat))
            Text1.Text = Replace$(st, mMacros, Format(Time, mTimeFormat))
        End If
    End If


Помогите, народ... Меня заглючило в этом месте и все еще каратит :))
Если есть электрики - уберите замыкание ;))

Ответить

Страница: 1 |

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



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