Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2009, 18:48   #1
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию Поиск и удаление символов в тексте (Delphi)

Программа, удаляет пробелы перед запятой и вставляет пробел после запятой, если его нет. Проблемка - работает только для первой запятой в тексте в Memo1. Как распространить действие на весь текст?

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   s: string;
begin
 s := Memo1.Text;

 while s[pos(',', s) - 1] = ' ' do
   delete(s, pos(',', s)-1, 1);
 
 while s[pos(',', s) + 1] <> ' ' do
   insert(' ', s, pos(',', s)+1);  

 Memo1.Text := s;
end;
ekzobyte вне форума Ответить с цитированием
Старый 04.04.2009, 19:13   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   s: string;
   i,k : integer;
begin
 s := Memo1.Text;

 k:=1;
 while k<=length(s) do
  begin
  i := pos(',',copy(s,k,length(s)));
  if i=0 then break;
  if s[k+i] <> ' ' then
   begin
   insert(' ',s,k+i);
   inc(k);
   end;
  k := k + i;
  end;

 Memo1.Text := s;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.04.2009, 19:46   #3
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Функция POS ищет только первое вхождение
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer;
    s:string;
    flag:boolean;
begin
for i:=0 to memo1.Lines.Count-1 do
  begin
  s:=memo1.Lines.Strings[i];
  memo1.Lines.Delete(i);
  flag:=false;
  j:=1;
  while j<=length(s) do
    begin
    if s[j]=',' then begin
                     if s[j-1]=' ' then flag:=true;
                     if s[j+1]<>' ' then insert(' ',s,j+1);
                     end;
    while flag do
      begin
      delete (s,j-1,1);
      j:=j-1;
      if s[j-1]<>' ' then flag:=false;
      end;
    j:=j+1;
    end;
  memo1.Lines.Insert(i,s);
  end;
end;
Сергей089 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c#, в тексте имеется пара символов непонятного назначения byte916 Помощь студентам 4 17.11.2008 02:19
Помогите написть простую прогу подсчета статистики слов, символов в тексте.. amigo90 Паскаль, Turbo Pascal, PascalABC.NET 14 07.11.2008 18:34
Поиск в тексте Rigard Общие вопросы Delphi 8 15.10.2008 00:06