![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите пожалуйста разобарться:
нужно отредактировать конкретную строчку, заменив в ней, к примеру один пробел на два. Строчку вычисляю вот так RichEdit1.Lines.Count; //всего строк RichEdit1.Lines[1]; //№ строчки но как заменить, скажем, один пробел на два? то есть я пытался через RichEdit1.Text , но ничего толкого не получилось. Подскажите пожалуйста, ув. форумчане =) |
#2
|
|||
|
|||
![]() Подскажите плз хотя бы как перевести строчку под номером (RichEdit1.Lines[i]) в текст?
То есть что то вроде RichEdit1.Text := RichEdit1.Lines[i]; но что бы правильно и работало =) |
#3
|
|||
|
|||
![]() Код:
var S : String; begin S := RichEdit1.Lines[i]; не работает? |
#4
|
|||
|
|||
![]() Цитата:
остался последний вопрос - как заменить в строке один символ на другой? или подскажите пожалуйста, через какой оператор это делать? |
#5
|
|||
|
|||
![]() Замена - со строкой можно работать как с массивом. только нумерация с 1. Есть еще StringReplace, но она скорее для замены подстрок, а не отдельных символов.
Удаление - есть процка Delete. Вставка - Insert. |
#6
|
|||
|
|||
![]() читал справку, так и не понял как удалить символ через delete
сейчас погуглил, решил что может быть можно как нибудь через search (' ',' '); то есть заменить один пробел на два, как я понял, либо через StringReplace Помогите пожалуйста прикрутить это Сейчас мой код выглядид так: Код:
begin n := RichEdit1.Lines.Count; for i:= 1 to n do begin strk := RichEdit1.Lines[i]; i:=i-1; end; end; |
#7
|
|||
|
|||
![]() помогите плз, курсач скоро сдавать, а у меня ничего не получается =\
|
#8
|
|||
|
|||
![]() Код:
// Expand string by spaces function SetStrLength(S : String; ALength : Integer) : String; var Sp : Integer; I : Integer; begin Sp := ALength - Length(S); If Sp <= 0 Then Result := S Else While Sp > 0 Do Begin Result := ''; For I := 1 To S Do Begin Result := Result + S[i]; If (S[i] = ' ') And (Sp > 0) Then Begin Dec(Sp); Result := Result + ' '; End; End; S := Result; End; end; ... begin for i:= 0 to RichEdit1.Lines.Count-1 do begin RichEdit1.Lines[i] := SetStrLength(RichEdit1.Lines[i],80); end; где-то так. не проверял. |
#9
|
|||
|
|||
![]() Цитата:
Но всё равно большущее спасибо |
#10
|
|||
|
|||
![]() Угу,
Код:
For I := 1 To Length(S) Do |
#11
|
|||
|
|||
![]() а вот так работает, правда иногда виснет, но всё равно большое спасибо!
|
#12
|
|||
|
|||
![]() проверь, а не виснет ли на строчках, в которых вообще нет пробелов?
Если да, то просто перед обработкой проверяй, что в строке нет пробелов (Pos(' ',S) = 0) и пропускай такие строки. |
#13
|
|||
|
|||
![]() Пытаюсь переделать для всех шрифтов, а не только моношрифтов.
Как понимаю надо сделать что то вроде ALength := IntToStr(ListView1.StringWidth(S)); В function SetStrLength эта строчка не работает, но в procedure TForm1.btn10Click(Sender: TObject); ошибок не выдает. Как решить эту ситуацию, т.к. как я понимаю, эта строчка должна быть в function SetStrLength Последний раз редактировалось login, 10.06.2010 в 20:48. |
#14
|
|||
|
|||
![]() up, help plz =\
|
#15
|
|||
|
|||
![]() Э-э-э... это посложнее.
у канвы есть метод TextWidth. Т.е. тебе надо добавить таекое кол-во пробелов, что бы привести к почти одинаковой длинне по результату вызова этой функции. |