![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здраствуйте, помогите пожалуйста с задачей
нужно чтобы введенный символ в edit1 в тексте, введенном в memo1, заменялись на символ введенный в edit2, если символа в тексте нет то к тексту добавлялись символы из edit1 Код:
var S: string; i: integer; begin i:=length(S); S:=memo1.Text; if S[i]=edit1.Text then memo1.Text:=edit2.text else memo1.Text:=memo1.Text+edit2.text; end; end. так введенное в edit2 просто добавляется к тексту( |
#2
|
||||
|
||||
![]() У меня мозги закипели в попытках понять что вы спросили.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() нужно указать символ в edit1 и если в тексте есть этот символ, то он заменяется на символ указанный в edit2
|
#4
|
||||
|
||||
![]() Так что ли:
Код:
Var S: String; P: Boolean; i, j: Integer; begin P:= True; For i:= 0 To Memo1.Lines.Count - 1 Do begin S:= Memo1.Lines.Strings[i]; For j:= 1 To Length(S) Do if Edit1.Text = S[j] Then begin S[j]:= Edit2.Text[1]; P:= False; end; Memo1.Lines.Strings[i]:= S; end; if P Then Memo1.Lines.Add(Edit1.Text); end; If end Then begin; |
#5
|
|||
|
|||
![]() да спасибо, только нужно не 1 символ а все введенное
|
#6
|
|||
|
|||
![]() так меняются только 1 символ и если в тексте искать больше одного символа то его не находит(
чтобы менялось все нужно j: string или как? Последний раз редактировалось Brons14, 26.04.2012 в 21:55. |
#7
|
||||
|
||||
![]() Подправил:
Код:
Var S: String; P: Boolean; i, j, k: Integer; begin P:= True; For i:= 0 To Memo1.Lines.Count - 1 Do begin S:= Memo1.Lines.Strings[i]; For j:= 1 To Length(S) - Length(Edit1.Text)+1 Do if Edit1.Text = Copy(S, j, Length(Edit1.Text)) Then begin For k:= 1 To Length(Edit1.Text) Do S[j+(k-1)]:= Edit2.Text[k]; P:= False; end; Memo1.Lines.Strings[i]:= S; end; if P Then Memo1.Lines.Add(Edit1.Text); end; If end Then begin; |
#8
|
|||
|
|||
![]() по моему ничего не изменилось, но символ заменяется по прежнему только первый
|
#9
|
||||
|
||||
![]() PosEx + StringReplace. Описание - в справке и гугле. Цикл с этими функциями, еще пара строк и 100 грамм логики - и всё готово.
![]() З.Ы. Писать весь код не собираюсь. jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
|||
|
|||
![]() непонятно как применить PosEx, StringReplace если текст неопределен
|
#11
|
||||
|
||||
![]() Edit1.Text возвращает текст Edit'а как строку.
Memo1.Lines.Text возвращает текст Memo как строку. Надо найти все вхождения подстроки Edit'а в строке Memo. Если нужно просто заменить - достаточно StringReplace, т.к. он умеет заменять все подстроки. Если произвести ещё какие-то действия - то еще может понадобится PosEx. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 26.04.2012 в 22:49. |
#13
|
|||
|
|||
![]() все равно ничего не понял, с StringReplace не получается или может я не так понял, ведь StringReplace заменяет подстроку или символы в тексте уже заданном в коде, а у меня в edit это символы которые ищутся в тексте и текст разный
|
#14
|
|||
|
|||
![]() вот почти только теперь если в edit1 2 символа а в edit2 3 символа то поменяются толлько 2 символа, а нужно например '1' заменялся на '***' , или 'ка' на '1'
|
#15
|
||||
|
||||
![]() StringReplace рулит)
Код:
Var S: String; P: Boolean; i: Integer; begin P:= True; For i:= 0 To Memo1.Lines.Count - 1 Do begin S:= StringReplace(Memo1.Lines.Strings[i], Edit1.Text, Edit2.Text, [rfReplaceAll, rfIgnoreCase]); if S <> Memo1.Lines.Strings[i] Then P:= False; Memo1.Lines.Strings[i]:= S; end; if P Then Memo1.Lines.Add(Edit1.Text); end; If end Then begin; |
Этот пользователь сказал Спасибо AND_REY за это полезное сообщение: | ||
Brons14 (26.04.2012)
|