Нужен хэлп !!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Monax
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 10.08.2005 (Ср) 11:13
Откуда: Ukrain

Нужен хэлп !!!!

Сообщение Monax » 10.08.2005 (Ср) 22:43

Я хочу зделать прогу с двумя текстовыми полями на форме и кнопкой.
Смысл проги в том: в Text1 пишеш любой текст, при нажатии на кнопку этот текст перелетает во второе текстовое поле но с заменой буквы А на +. Как это сделать?

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

Сообщение GSerg » 11.08.2005 (Чт) 5:28

text2.text=replace(text1.text, "A", "+")
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.08.2005 (Чт) 11:25

если у него VB6 то там и найдет, а если более ранний, то заодно и напишет... :D Пригодится
Весь мир матрица, а мы в нем потоки байтов!

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.08.2005 (Чт) 12:11

А че там писать-то? :|
Код: Выделить всё
Function Replace(Expression As String, Find As String, Replace As String, Optional Start As Long = 1, Optional Count As Long = -1, Optional Compare As VbCompareMethod = vbBinaryCompare) As String
Dim I&, Pos&, S$
S = Expression
Pos = InStr(Start, S, Find, Compare)
While I > Count And Pos <> 0
S = Left$(S, Pos - 1) & Replace & Right(S, Len(S) - (Pos - 1) - Len(Find))
I = I + 1
DoEvents
Pos = InStr(Pos + 1, S, Find, Compare)
Wend
Replace = S
End Function
Нет меня больше

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

Сообщение GSerg » 11.08.2005 (Чт) 12:14

Чё писать, говоришь? :)
http://www.vbstreets.ru/VB/Articles/65769.aspx

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

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

Сообщение alibek » 11.08.2005 (Чт) 12:18

A.A.Z. писал(а):А че там писать-то?

В этом коде есть пара серьезных недостатков. Сейчас я их уже не вспомню, подумать надо, но раньше я их искал и находил.
Lasciate ogni speranza, voi ch'entrate.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.08.2005 (Чт) 12:19

Эт я читал :) И на ус мотал :)
Но, имхо, афтару достаточно и этого ;)
Нет меня больше

Monax
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 10.08.2005 (Ср) 11:13
Откуда: Ukrain

Сообщение Monax » 11.08.2005 (Чт) 22:29

FleX_2004 писал(а):2GSerg ага... а функцию реплэйс он где возмет? :)

На VB6 всё есть так что всё работает только есть ешё одна проблема
как быть если мне нужно заменить А на ! и в тоже время В на # :?:

WERT-007
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 27.07.2005 (Ср) 15:10

Сообщение WERT-007 » 12.08.2005 (Пт) 4:49

А можно и так:

Это в модуль:
Код: Выделить всё
Public toReplace() As SUPERREPLACE_TYPE

Public Type SUPERREPLACE_TYPE
    Old_s As String
    New_s As String
End Type

Public Sub ClearReplace()
    ReDim toReplace(0)
End Sub

Public Sub AddToReplace(Old_s As String, New_s As String)
    ReDim Preserve toReplace(UBound(toReplace) + 1)
    toReplace(UBound(toReplace)).New_s = New_s
    toReplace(UBound(toReplace)).Old_s = Old_s
End Sub

Public Function ReplaceALL(Source As String, Optional Start As Long = 1) As String
    Dim i&, q&, t$
    For q = 1 To UBound(toReplace)
        t = toReplace(q).Old_s
        For i = Start To Len(Source) - Len(t) + 1
            s = Mid$(Source, i, Len(t))
            If s = toReplace(q).Old_s Then
                s = toReplace(q).New_s
                Source = Left$(Source, i - 1) & s & Mid$(Source, i + Len(toReplace(q).Old_s))
            End If
        Next i
    Next q
    ReplaceALL = Source
End Function


И вызывается это дело примерно так:
Код: Выделить всё
Private Sub Command1_Click()
    ClearReplace
    AddToReplace "a", "1"
    AddToReplace "b", "#"
    AddToReplace "coffee","Tea"
    AddToReplace "ppp",""
    Text2 = ReplaceALL(Text1)
End Sub


Медленно, но надежно! :D

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

Сообщение GSerg » 12.08.2005 (Пт) 4:54

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

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

Сообщение alibek » 12.08.2005 (Пт) 7:49

GSerg писал(а):Интересно, как быть в том случае, когда одна заменяемая строка является частью другой?

Хе :)
А я как-то делал пакетный Replace с обработкой различных ситуаций, в т.ч. и этой. Кучу всяких оптимизаций делал, чтобы ускорить.
Lasciate ogni speranza, voi ch'entrate.

WERT-007
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 27.07.2005 (Ср) 15:10

Сообщение WERT-007 » 12.08.2005 (Пт) 10:31

Интересно, как быть в том случае, когда одна заменяемая строка является частью другой?

Тогда ставить приоритеты - что раньше добавлено, то первым и обработается!


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

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

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

    TopList