![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. Т.е. тебе надо добавить таекое кол-во пробелов, что бы привести к почти одинаковой длинне по результату вызова этой функции. |