Подскажите алгоритм

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Подскажите алгоритм

Сообщение TiG » 20.10.2005 (Чт) 10:52

Есть TextBox3 c данными вида:
___________
|vasya centr |
|petya arena |
|misha arsen |
|vovan gospi |
|__________|

Как их (данные) распихать в TextBox-ы?:
TextBox1(0) TextBox2(0)
TextBox1(1) TextBox2(1)
TextBox1(2) TextBox2(2)
TextBox1(3) TextBox2(3)


TextBox1(0) должен быть равен vasya
TextBox2(0) должен быть равен centr
etc...

За ранее спасибо, код приветствуется)
Все мои игрушки мама разметало ураганом...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.10.2005 (Чт) 10:55

Алгоритм: разбиваешь текст на строки, а строки на слова, и полученные слова присваиваешь тексбоксам.
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 11:17

На всякий случай, скажу, что удобнее всего это делать функцией Split$.
Быть... или не быть. Вот. В чём вопрос?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.10.2005 (Чт) 11:39

Split() возвращает Variant, а не String.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.10.2005 (Чт) 11:43

uhm писал(а):На всякий случай, скажу, что удобнее всего это делать функцией Split$.

Нет такой функции! Переход хода!
Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 11:47

:lol:

Каюсь, промахнулся.

Split без доллара.

:lol:
Быть... или не быть. Вот. В чём вопрос?

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 11:54

Ой щяс как возьму топорик, да поразбиваю на мониторе этот текстбокс на строчки, а потом строчки на квадратики. Хм криво получиться наверное, ну ничего напильничком подравняю и потом приклею на другом мониторе на текстбоксики...
Как думаете моментом клеить или эпокситкой?
Все мои игрушки мама разметало ураганом...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 12:08

Тоже метод. А это ты к чему, к тому, что все то, что мы тут понаписали, не подходит?
Быть... или не быть. Вот. В чём вопрос?

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 12:25

хех) это я к тому, что букваря у мну нету и в интернете не могу найти точку отсчета по этой теме. Хз что значит разбить на строки и какими командами пользоваться и их синтаксиса соответственно тоже не знаю(
Все мои игрушки мама разметало ураганом...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.10.2005 (Чт) 12:33

Lasciate ogni speranza, voi ch'entrate.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 12:37

alibek

перегрузите компьютер
Все мои игрушки мама разметало ураганом...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.10.2005 (Чт) 13:21

TiG писал(а):хех) это я к тому, что букваря у мну нету и в интернете не могу найти точку отсчета по этой теме. Хз что значит разбить на строки и какими командами пользоваться и их синтаксиса соответственно тоже не знаю(

Тебе же написали: Split без доллара. F1 нажать тяжело?
Изображение

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 13:27

1. ya.ru - Split visual basic - Искомая комбинация слов нигде не встречается
2. MSDN не установлен
3. http://msdn.microsoft.com/library/ английского не знаю
4. Обжект браузер:
Function Split(Expression As String, [Delimiter], [Limit As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare])

Непонятно! Visual Basic для новичков! Не кодом так алгоритмом на пальцах с командами помогите.
Все мои игрушки мама разметало ураганом...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 13:43

Понятно. Простые английские слова в качестве имён параметров.
Английский учить придётся всё равно. Учи.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 13:57

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 14:20

GSerg

перегрузите компьютер
Все мои игрушки мама разметало ураганом...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.10.2005 (Чт) 14:50

Код: Выделить всё
dim arrLines() as String
Dim arrRow() as String
Dim i as Integer
Dim j as Integer

arrLines=Split(TextBox3,vbCrLf)

For i=0 to Ubound(arrLines)
   
    arrRow=Split(arrLines(i)," ")
    For j...
   
    ...
Next i
...


и тд и тп

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.10.2005 (Чт) 14:56

TiG писал(а):2. MSDN не установлен

Установи. Половина вопросов сразу пропадёт.


TiG писал(а):3. http://msdn.microsoft.com/library/ английского не знаю

Юзай lingvo. Вторая половина вопросов пропадёт.
Изображение

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 20.10.2005 (Чт) 15:18

tyomitch Перегрузи компьютер

Konst_One Респект)

А вот более медленный извращенный подход: Создаем листбокс1 и запихаваем в него данные из файла, данные в котором из текстбокса3.

Код: Выделить всё
Open "c:\temp.txt" For Input As #1
Do Until EOF(1)
Line Input #1, txt
alltxt = alltxt + txt + vbCrLf
List1.AddItem (txt)
Loop
Close #1


Потом из листбокс1 раскидываем это по текстбоксикам:

Код: Выделить всё
For bbb = 0 To 19
p1 = InStr(1, List1.List(bbb), "*", vbTextCompare)
p2 = InStr(p1, List1.List(bbb), "/", vbTextCompare)
p3 = InStr(1, List1.List(bbb), "+", vbTextCompare)
Text1(bbb).Text = Mid(List1.List(bbb), p1 + 1, p2 - p1 - 1)
Text2(bbb).Text = Mid(List1.List(bbb), p2 + 1, p3 - p2 - 1)
Next bbb


П.С. данные в текстбокс немного пришлось модернизировать:

_____________
|*vasya/centr+ |
|*petya/arena+ |
|*misha/arsen+|
|*vovan/gospi+ |
|____________|
Все мои игрушки мама разметало ураганом...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 20.10.2005 (Чт) 15:43

TiG Перегрузи компьютер, монитор, мышку, клавиатуру и мозги
Быть... или не быть. Вот. В чём вопрос?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.10.2005 (Чт) 19:27

ничего, пусть шишки понабивает, а потом легче будет :lol:

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 20.10.2005 (Чт) 23:52

Если не юзать сплит, то проще всего написать автомат. Два состояния, 4 перехода, один счетчик... И не нужно заморачиваться на разделители, а то придумает кто нить ник с плюсиком... Если надо могу написать код.

tyomitch А MSDN его не спасет, русского MSDN'а я в природе не видел.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 21.10.2005 (Пт) 0:04

Нда... Все перезагрузились-то? :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 21.10.2005 (Пт) 5:55

TiG
Если по варианту (работаем с файлом):
___________
|vasya centr |
|petya arena |
|misha arsen |
|vovan gospi |
|__________|

Тогда
Код: Выделить всё
    Dim i As Long, l As Long
    Dim sTextLine As String, sSplitTxt As Variant
    Dim sUser() As String, sTitl() As String
    Open "c:\temp.txt" For Input As #1
        Do Until EOF(1)
            Line Input #1, sTextLine
            If Trim$(sTextLine) = "___________" Or Trim$(sTextLine) = "|__________|" Then
            Else
                sTextLine = Trim$(Replace(sTextLine, "|", ""))
                sSplitTxt = Split(sTextLine, " ")
                ReDim Preserve sUser(i)
                ReDim Preserve sTitl(i)
                sUser(i) = sSplitTxt(0)
                sTitl(i) = sSplitTxt(1)
                i = i + 1
            End If
            DoEvents
        Loop
    Close #1
    For l = 0 To i - 1
        Debug.Print "User: " & sUser(l)
        Debug.Print "Titl: " & sTitl(l)
    Next l


Читать MSDN все же придется, если хочешь что-то нормальное когда-нибудь сделать. Английский желательно мало-мальски знать (сам не знаю, но msdn читаю)...
P.S. Контрольная перезагрузка... :)
Бороться и искать, найти и перепрятать!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2005 (Пт) 6:28

GAGArin писал(а):А MSDN его не спасет, русского MSDN'а я в природе не видел.

Только что обсуждали, что есть он.
http://msdn.microsoft.com/library/rus/
Изображение

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 21.10.2005 (Пт) 8:35

uhm выключи комп, залей мозги пивом

GAGArin Интересно, напиши по свободе.

tyomitch Клёва) Терь, Алибек будет по две ссылки выдавать)

MeMBus Сенк) C этим "________" ты правда перестарался, это я так бордюр текстбоска изобразил)
Последний раз редактировалось TiG 21.10.2005 (Пт) 8:52, всего редактировалось 3 раз(а).
Все мои игрушки мама разметало ураганом...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 21.10.2005 (Пт) 8:45

"Ой, ну кто бы говорил!" (с) :lol:
Быть... или не быть. Вот. В чём вопрос?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.10.2005 (Пт) 8:58

TiG писал(а):Терь, Алибек будет по две ссылки выдавать)

Нет, отныне ты в игноре.
Lasciate ogni speranza, voi ch'entrate.

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 21.10.2005 (Пт) 9:03

Я тебе сам хотел предложить :lol:
Все мои игрушки мама разметало ураганом...

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 22.10.2005 (Сб) 9:16

GAGArin Интересно, напиши по свободе.

Ну вот...
Код: Выделить всё
Public strNow As String 'Накапливаемое слово
Public btPosition As Byte 'Тригер пишем слово/или пробелы пропускаем
Public btPositionT As Byte 'Переменная позволяющая избежать попадания в оба IF'a
Public strTemp As String 'Считаная буква
Public intSchet As Integer 'Счетчик


Private Sub cmdStart_Click()

Open App.Path & "\text.txt" For Input As 1
btPosition = 1
btPositionT = 1
intSchet = 1

Do Until EOF(1)
    strTemp = Input$(1, #1)
      If btPosition = 1 Then
        If strTemp = " " Or Asc(strTemp) = 10 Or Asc(strTemp) = 13 Then
          'Пробел после пробела =- отдыхаем
        Else
          btPositionT = 2 'Нашли букву, начали писать
          strNow = strNow & strTemp
         
        End If
      Else
     
        If strTemp = " " Or Asc(strTemp) = 10 Or Asc(strTemp) = 13 Then
          'Нашли пробел записываем слово в ТекстБокс
          If intSchet Mod 2 = 0 Then
            Text2(Int(intSchet / 2 - 1)).Text = strNow
          Else
            Text1(Int(intSchet / 2 - 0.5)).Text = strNow
          End If
          '---
          strNow = ""
          btPositionT = 1
          intSchet = intSchet + 1
          'Сбрасываем значения, переставляем тригер на подсчет пробелов
        Else
          'Ну если побела не нашли, то копим слово.
          strNow = strNow & strTemp
        End If
      End If
      btPosition = btPositionT 'Записываем изменения в состоянии
Loop

Close #1

End Sub


Плохой код, да и комменты на "почти русском". Два состояния позволяют пропустить сколько угодно пробелов где угодно, но вот Split делает это гораздо проще. Правда я не помнил этой функции и если бы пришлось писал бы все равно почти так (или написал бы эту функцию)
Последний раз редактировалось GAGArin 22.10.2005 (Сб) 17:34, всего редактировалось 1 раз.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList