Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.03.2011, 00:41
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию Удаление последнего символа из строки...

Доброго времени суток!
Помогите пожалуйста решить следующую проблему:
Мне нужно чтобы при одном условии из 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  
Старый 29.03.2011, 01:19
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Код:
delete(DelOp, length(DelOp)-1, 1);
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 29.03.2011, 01:41
link-oln link-oln вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
Код:
delete(DelOp, length(DelOp)-1, 1);
Пробовал, всё равно не выходит... А если больше чем -1 то удаляет всё кроме последних символов число которых равно тому что мы отнимаем от length...
Ответить с цитированием
  #4  
Старый 29.03.2011, 03:09
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Насколько я понял суть в том чтобы в Edit нельзя было ввести символ '+'? Проще сделать это в OnKeyPress:
Код:
if Key = '+' then Key := #0;
Ответить с цитированием
  #5  
Старый 29.03.2011, 09:36
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от ryderx34
Насколько я понял суть в том чтобы в Edit нельзя было ввести символ '+'? Проще сделать это в OnKeyPress:
Код:
if Key = '+' then Key := #0;
ctrl+c, ctrl+v никто не отменял ))
Ответить с цитированием
  #6  
Старый 29.03.2011, 09:59
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Код:
if trim(edit1.text)[length(trim(edit1.Text))]='+' then
edit1.Text:=copy(edit1.Text,0,length(trim(edit1.Text))-1);
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #7  
Старый 29.03.2011, 18:21
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Цитата:
Сообщение от TOJluK
ctrl+c, ctrl+v никто не отменял ))
Удаление последнего символа тоже не спасёт от Ctrl+V, юзер же может вставить ненужный символ и не в конец. Тогда уж что-то вроде этого делать:
Код:
procedure TForm1.EditChange(Sender: TObject);
begin
  Edit.Text := StringReplace(Edit.Text, '+', '', [rfReplaceAll]);
  Edit.SelStart := Lenght(Edit.Text);
end;
Ответить с цитированием
  #8  
Старый 29.03.2011, 09:30
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Попробуй так:
Код:
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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter