Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: отображение в Msgbox сомволов от X до Y из textbox. Помогите.  (Прочитано 11284 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
l23ll
Гость
« : 12-04-2007 17:41 » 


Часть кода:

...
a$ = textbox1.Text
pro = " К: "
orp = " Ж: "
If InStr(i, a$, pro, vbTextCompare) Then
...

Вопрос:
Как продолжить, чтобы из a$ отображальсь только цифры (причем цифры там по маске от Х до ХХХ,ХХХ,ХХХ,ХХХ) от (pro = " К: ") до (orp = " Ж: ")?

Подробнее (другими словами):
нужен код складывающий все K:, Ж:, С:, Ю: и RЭ:


"тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999
тру ля-ля К: 65,894 Ж: 4 С: 78,536 Ю: 28 RЭ: 4,099
у-у-гу-гу К: 95,888,647 Ж: 45 С: 8,336 Ю: 18,228 RЭ: 54,999"

как смог объяснил Скромно так...
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 13-04-2007 14:21 » 

не понятно
примерчик бросьте
Записан

I Have Nine Lives You Have One Only
THINK!
l23ll
Гость
« Ответ #2 : 16-04-2007 14:30 » 

Текст

тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999
тру ля-ля К: 65,894 Ж: 4 С: 78,536 Ю: 28 RЭ: 4,099
у-у-гу-гу К: 95,888,647 Ж: 45 С: 8,336 Ю: 18,228 RЭ: 54,999

каким кодом сложить все K:, Ж:, С:, Ю: и RЭ:, чтоб получилась, соответственно
сумма этих чисел. Причем это целые числа!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 17-04-2007 06:30 » new

Текст

тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999
тру ля-ля К: 65,894 Ж: 4 С: 78,536 Ю: 28 RЭ: 4,099
у-у-гу-гу К: 95,888,647 Ж: 45 С: 8,336 Ю: 18,228 RЭ: 54,999

каким кодом сложить все K:, Ж:, С:, Ю: и RЭ:, чтоб получилась, соответственно
сумма этих чисел. Причем это целые числа!

т.е.
для тра-ля-ля  нужно
Код:
985+745+286+8+336+18+228+54+999
?
Записан

I Have Nine Lives You Have One Only
THINK!
l23ll
Гость
« Ответ #4 : 18-04-2007 21:02 » 

спасибо.
а каким кодом определить какие цифры находятся от К: до Ж: и.т.д.?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #5 : 27-04-2007 09:50 » 

так и не дождался внятного описания проблемы и желаемого результата
поэтому выкладываю часть
Код:
Private Sub Test()
    Dim strIn As String
    Dim aIn() As String
    Dim aNum() As String
   
    Dim i As Integer
   
    strIn = "тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999"
   
    'бьем строку на составляющие
    aIn = Split(strIn, " ")
   
    'выводим массив
    i = 0
    For Each strTmp In aIn
        Debug.Print "Элемент(" & Str(i) & ") " & strTmp
        i = i + 1
    Next strTmp
End Sub

вот результат
Элемент( 0) тра-ля-ля
Элемент( 1) К:
Элемент( 2) 0
Элемент( 3) Ж:
Элемент( 4) 985,745,286
Элемент( 5) С:
Элемент( 6) 8,336
Элемент( 7) Ю:
Элемент( 8) 18,228
Элемент( 9) RЭ:
Элемент( 10) 54,999


Дальше делайте то, что вам нужно
Записан

I Have Nine Lives You Have One Only
THINK!
l23ll
Гость
« Ответ #6 : 29-04-2007 05:06 » 

вся проблема в том, что текст может быть:

тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999

а может быть какой угодно, даже:

вася скушал К: 123 Ж: 286 С: 0 Ю: 8 RЭ: 444,875,999
петя выпил К: 3 Ж: 286 С: 0 Ю: 99 RЭ: 4
...и так до 100 строк.

постоянны только К:, Ж:, С:, Ю: и RЭ:.

нужен код для сложения этих цифр, причем игнорируя запятые.
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #7 : 30-04-2007 07:53 » 

1. Сплит по ":"
2. Проход циклом по полученному массиву
2.1. Проверка наличия сигнальных строк (К, Ж, С, Ю и RЭ) в предыдущем элементе.
2.2. При нахождении, сплит элемента по "," с последующим сложением элементов второго массива.

вот примерный алгоритм
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #8 : 02-05-2007 06:33 » 

Вот еще один замудренный вариант
Код:
Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches
   
   Set regEx = CreateObject("VBScript.RegExp")
     
   regEx.Pattern = patrn                ' строка для поиска
   regEx.IgnoreCase = True              ' игнорируем пропись
   regEx.Global = False                 ' искать до первого вхождения
   Set Matches = regEx.Execute(strng)   ' ищем
   
   RegExpTest = Matches(0)
   
   End Function
   
Function EvalTest(strIn)
    Dim WSCtl
   
    Set WSCtl = CreateObject("MSScriptControl.ScriptControl")
    WSCtl.Language = "VBScript"
   
    EvalTest = WSCtl.Eval(strIn)
End Function

Public Sub test()
    Dim i As Integer
    Dim strIn As String
    Dim strRegExp As String
    Dim aKey(5) As String
    aKey(0) = "К:"
    aKey(1) = "Ж:"
    aKey(2) = "С:"
    aKey(3) = "Ю:"
    aKey(4) = "RЭ:"
   
    strIn = "тра-ля-ля К: 0 Ж: 985,745,286 С: 8,336 Ю: 18,228 RЭ: 54,999"
   
    'бежим по всем ключам
    For i = 0 To 4
        strRegExp = RegExpTest(aKey(i) & " ([0-9,]*)", strIn)
       
        'немного преобразуем строку
        strRegExp = Replace(strRegExp, aKey(i), "")
        strRegExp = Replace(strRegExp, ",", "+")
       
        'считаем
        Debug.Print "Сумма по ключу " & aKey(i) & " = " & EvalTest(strRegExp)
    Next i
   
End Sub

Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines