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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.12.2012, 21:41
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию Программа не работает

Есть однострочный редактор Edit(туда вводится число) и кнопка SBC. При нажатии на кнопку в месте, где находится курсор, ставится запятая(если запятая в этом числе уже есть, то ставится новая в месте, где находится курсор). Вот текст события OnClick кнопки SBC:
Код:
procedure TForm1.SBCClick(Sender: TObject);
var s:string;
i:integer;
begin
s:=Edit.Text;
for i:=1 to length(s) do //проверка на наличие запятой
 begin
   if s[i]=',' then
     if Edit.SelStart<>0 then //если курсор в начале строки, то запятая остается
     Delete(s,i,1); //удаляется запятая
 end;
if Edit.SelStart<>0 then //если курсор в начале строки, то запятую ставить не надо
Insert(',',s,Edit.SelStart); //в положение курсора ставится запятая
Edit.Text:=s; 
end;
Вроде бы должно работать, но нет! Если курсор стоит после первой цифры, то запятая ставится в самое начало числа(пример - 5555 при курсоре, стоящем после первой 5, при нажатии на кнопку превращается в ,5555). А если курсор стоит перед последней цифрой, то отделяются почему-то две цифры!(пример - 5555 при курсоре, стоящем перед последней 5, превращается в 55,55). Прошу помочь.
Ответить с цитированием
  #2  
Старый 06.12.2012, 22:18
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Код:
var s:string;
i:integer;
begin
  s:=Edit.Text;
  i:=1;
  while i<=length(s) do
   begin
     inc(i);
     if s[i]=',' then
       if Edit.SelStart<>0 then
       begin //
         Delete(s,i,1); //
         if Edit.SelStart>=i then
         Edit.SelStart:=Edit.SelStart-1;
       end;
   end;
  if Edit.SelStart<>0 then //
  Insert(',',s,Edit.SelStart+1); //
  Edit.Text:=s;
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо YVitaliy за это полезное сообщение:
Diplomate (07.12.2012), Syslenish (07.12.2012)
  #3  
Старый 08.12.2012, 18:46
Diplomate Diplomate вне форума
Прохожий
 
Регистрация: 10.11.2012
Сообщения: 15
Репутация: 10
По умолчанию

Ошибка найдена, прошу удалить сообщение.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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