Кто нибудь сталкивался с таким: Вобщем допустим в едит1 записано - 1101011110101110. Цель - в едит2 вводим допустим число 5 и у нас в едит3 должно получиться - 110101111010_1110 П.С. вместо 5-го символа должен вставиться любой символ/буква, главное чтобы отделить П.П.С. чуть не забыл, желательно в дельфи )
AnsiString s = Edit1->Text; int i = Edit2->Text.ToInt(); Edit3->Text = s.Insert("_", s.Length() - i + 2);
Berman, сделал как ты сказал var s: String; var i: Integer begin edit1.text := strtoint(edit2.text); edit3.text := s.Insert("_", s.Length() - i + 2); что та ошибку выдает, могешь в кратце описать что делает что? )
Вот рабочий код : Code: s:=edt1.Text; Insert('_',s,StrToInt(edt2.Text)); edt1.Text:=s; Вкратце : процедура Insert 1 параметр это то что вставляем. 2 - куда 3 - номер символа
Вот код для Delphi Code: procedure TForm1.Button1Click(Sender: TObject); var t, s, m: String; begin t:=Edit1.Text; s:=Edit2.Text; m:=Edit3.Text; Insert(s,t,StrToInt(m)); Edit4.Text:=t; end; end. где: t-текст s-символ m-в каком месте
Теперь вопрос №2: выше представлен код, в котором только 1 раз можно вставить символ в нужное место, а если предположим, что на месте 4, 6, 7 символа исходного текста вставить допустим тот же "_" символ
тебе вроде написали функцию та Insert('_',string,4); Insert('_',string,6); Insert('_',string,7); --------- или тебе заменить нужно? string[4]:='_'; string[6]:='_'; string[7]:='_';
в Edit2 вводить цифры через запятую. PHP: var j,i:integer; m,s:string; Paste:array[1..255] of integer; begin s:=Edit1.Text; { запоминаем текст} m:=Edit2.text; {запоминает цифры} m:=m+','; { добавляем , для парсинга} for i:=1 to 255 do begin Paste[i]:=-1; {заполняем массив -1} if length(m)>0 then { если длина строки с цифрами > 0} begin Paste[i]:=strtoint(copy(m,1,pos(',',m)-1)); { сохраняем значение} delete(m,1,pos(',',m)); {удаляем, что сохранили } end; end; j:=0; // Счетчик, который фиксирует баг с заменой for i:=1 to 255 do begin if Paste[i]=-1 then break; {если число в массиве -1 прекращаем цикл} insert('_',S,Paste[i]+j); {вставляем текст} inc(j); {увеличивываем позицию} end; Edit3.Text:=s; {выводим результат} Если с конца надо замени: Code: insert('_',S,Paste[i]+j); на Code: insert('_',S,length(s)-Paste[i]+j);
Что бы не заморачиваться, вот без массива. Code: procedure TForm1.Button1Click(Sender: TObject); const Delimiter=','; Replacement='_'; var I:integer; Num,Str:string; begin Str:=edit1.text; Num:=edit2.text+Delimiter; I:=0; {новая позиция, с уже добавлеными символами} While length(Num)>0 do begin insert(Replacement,Str,strtoint(copy(Num,1,pos(Delimiter,Num)-1))+I); delete(Num,1,pos(Delimiter,Num)); inc(I); end; edit1.Text:=Str; end;