Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: вопрос по функциям mid left right Добавлено: 14.05.08 23:40  

Автор вопроса:  noob
что то не могу понять, подскажтите
почему если в текте строка начинается с символа, а не с пробела Left (sss,4) или Mid (sss,1,4)возвращает символы,а если есть пробелы - то ничего не возвращает

Open "C:\file\book.txt" For Input As #1
Do While Not EOF(1)
Input #1, zzz
If Mid(zzz, 1, 4) = "data"




If Mid(zzz, 2, 4) = " data" - ничего не возвращает

Ответить

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

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



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 15.05.08 00:42
так ты сравниваешь строку длиной 4 символа со строкой длиной 5 символов. и что должно получиться? Это тебе не FuzzyLogic =) Не скажет тебе, мол, строки совпадают на 80% =)

Ответить

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



Вопросов: 5
Ответов: 25
 Профиль | | #2 Добавлено: 15.05.08 01:43
нет я их не сравниваю это разные примеры

Mid(zzz, 1, 4) = "data" возвращает слово data

Mid(zzz, 2, 4) = " data" не возвращает ничего

Ответить

Номер ответа: 3
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #3
Добавлено: 15.05.08 01:51
    Mid(zzz, 1, 4) = "data" возвращает True
    Mid(zzz, 2, 4) = " data" возвращает False

    Это не операторы присваивания, а логические выраженния, которые анализируются в операторе If.

Ответить

Номер ответа: 4
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #4
Добавлено: 15.05.08 01:53
    Если, конечно, в zzz было символьное значение "data". :)

Ответить

Номер ответа: 5
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #5
Добавлено: 15.05.08 01:56
    Второй случай даст тоже False и при zzz=" data", как правильно заметил Executioner. :)

Ответить

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



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 15.05.08 11:50
Второй случай даст False при любом zzz.

Ответить

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



Вопросов: 5
Ответов: 25
 Профиль | | #7 Добавлено: 17.05.08 07:27


задача такая есть текстовый документ:
rewqrewqr
ewqrewrewr
data rtretreytret
retrewtrt
 в нем нужно найти слово data:
Open "C:\file\book.txt" For Input As #1
Do While Not EOF(1)
Input #1, zzz
If Mid(zzz, 1, 4) = "data" then
range ("A1";) = Mid(zzz, 6, 3)
end if
А1 ячейке присвоиться rtr

второй вариант где перед data стоит пробел
rewqrewqr
ewqrewrewr
 data rtretreytret
retrewtrt
Open "C:\file\book.txt" For Input As #1
Do While Not EOF(1)
Input #1, zzz
If Mid(zzz, 2, 4) = " data" then
range ("A1";) = Mid(zzz, 7, 3)
end if

А1 ячейке ничего не присвоится

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 17.05.08 10:47
Input #1, zzz

————>>
Line Input #1, zzz


If Mid(zzz, 2, 4) = " data" then

————>>
If Mid(zzz, 1, 4) = " data" then

Ответить

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



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #9
Добавлено: 17.05.08 11:10
Еще один...
If Mid(zzz, 1, 4) = " data" then

это не будет работать никогда =) Надо быть либо дебилом, либо страдать невнимательностью, чтоб надеяться, что это условие когда-нить вернет True.
Вот ты, видимо, смотрел не очень внимательно =)
Тогда уж
If Mid(zzz, 1, 5) = " data" Then

или
If Mid(zzz, 2, 4) = "data" Then

Ответить

Номер ответа: 10
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #10
Добавлено: 17.05.08 11:15
Вот тебе код. Рабочий.
Dim n As Integer
Open "C:\file\book.txt" For Input As #1
Do While Not EOF(1)
    n = InStr(1, zzz, "data";)
    If n > 0 Then
        range("A1";) = Mid(zzz, n + 5, 3)
    End If
Loop

Ответить

Номер ответа: 11
Автор ответа:
 noob



Вопросов: 5
Ответов: 25
 Профиль | | #11 Добавлено: 17.05.08 14:56
СПАСИБО, С
Line Input #1, zzz

работает

Ответить

Номер ответа: 12
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #12 Добавлено: 17.05.08 22:11
та незачто :D
всегда помним убогости вб6 =)

Ответить

Номер ответа: 13
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #13
Добавлено: 18.05.08 14:22
а там не пробівал искать??


Private Sub Form_Load()
Dim zzz As String 'peremenaya s strokoy
Dim countL As Integer 'skolko strok uzhe prochitali

    Open "c:/file.txt" For Input As 1
    Do While Not EOF(1)
        Input #1, zzz
        countL = countL + 1
        If InStr(zzz, "data";) <> 0 Then ''tipa zdes yest to chto nam nada
            MsgBox "V stroke pod nomer:" + Str(countL)
        End If
    Loop
    Close #1
End Sub

Ответить

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



Вопросов: 5
Ответов: 25
 Профиль | | #14 Добавлено: 21.05.08 09:53
еще один вопрос
имеется текстовый документ
fznjgojgojgwert
sjgjtsrnjgstng
rgjskotgnjltrksgnjrtwt
gnkntrngjtng
rkgjntngjltng
ssrtrtrtertretretgknrejg
можно ли задать поиск в нем от сих до сих

например от sjgjtsrnjgstng до rkgjntngjltng

Ответить

Номер ответа: 15
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #15
Добавлено: 21.05.08 13:43
Private Sub Form_Load()
    Const FILE As String = "z:\test.html"
    Const FROM_TEXT As String = "<title>"
    Const TO_TEXT As String = "</title>"

    Dim data As String, f As Long, t As Long, result As String
    Open FILE For Binary As #1
    data = Space(LOF(1))
    Get #1, , data
    Close
    f = InStr(1, data, FROM_TEXT)
    If f = 0 Then Exit Sub
    t = InStr(f, data, TO_TEXT)
    If t = 0 Then Exit Sub
    result = Mid$(data, f + Len(FROM_TEXT), t - (f + Len(FROM_TEXT)))
End Sub

Ответить

Страница: 1 |

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



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