|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Удаление последнего символа из строки...
Доброго времени суток!
Помогите пожалуйста решить следующую проблему: Мне нужно чтобы при одном условии из Edit'а удалялся последний символ, но у меня процедура Delete удаляет всё что только можно но не его! У меня это выглядит вот так: Код:
procedure TForm1.EditChange(Sender: TObject); begin DelOp := Edit.Text; if copy(Edit.Text, length(Edit.Text), 1) = '+' then delete(DelOp, length(DelOp), 1); Edit.Text := DelOp; Edit.SelStart := lenght(delOp); end; Что не так? Последний раз редактировалось link-oln, 29.03.2011 в 00:44. |
#2
|
|||
|
|||
Код:
delete(DelOp, length(DelOp)-1, 1); взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Насколько я понял суть в том чтобы в Edit нельзя было ввести символ '+'? Проще сделать это в OnKeyPress:
Код:
if Key = '+' then Key := #0; |
#5
|
||||
|
||||
Цитата:
|
#6
|
|||
|
|||
Код:
if trim(edit1.text)[length(trim(edit1.Text))]='+' then edit1.Text:=copy(edit1.Text,0,length(trim(edit1.Text))-1); Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#7
|
||||
|
||||
Цитата:
Код:
procedure TForm1.EditChange(Sender: TObject); begin Edit.Text := StringReplace(Edit.Text, '+', '', [rfReplaceAll]); Edit.SelStart := Lenght(Edit.Text); end; |
#8
|
|||
|
|||
Попробуй так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var i:integer; s:String; begin //Так только если плюс последний символ: //если в конце строки два или более плюса, //то удалит только один последний из-за этого //процедуру надо будет вызывать несколько раз. if Edit1.Text<>'' then begin s:=''; if (Edit1.Text[Length(Edit1.Text)]='+') then begin For i:= 1 to Length(Edit1.Text)-1 do s:=s+Edit1.Text[i]; Edit1.Text:=s; end; end; //Так если в строке вообще есть плюсы: { if Edit1.Text<>'' then begin s:=''; For i:= 1 to Length(Edit1.Text) do if Edit1.Text[i]<>'+' then s:=s+Edit1.Text[i]; Edit1.Text:=s; end; } end; Последний раз редактировалось Janom, 29.03.2011 в 10:01. |