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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.11.2010, 18:11
flips flips вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 60
Репутация: 10
Плохо Работа со строками ч.2

Задание: нужно написать программу которая удаляет пробелы внутри строки.
Нужна помощь в реализации
Код:
Код:
procedure DelMidSpace(var s:string);
var i,cnt:integer;
begin
 cnt:=length(s);
 for i:=1 to cnt do
  if ord(i)=32 then
   s[i]:=s[i+1];
 cnt:=cnt-1;
end;
Желательно пояснить, что я написал не так.
Ответить с цитированием
  #2  
Старый 10.11.2010, 18:19
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Во первых есть функция Trim, которая удаляет лишние пробелы и непечатаемые символы.
Ну а удаление пробелов если надо своя функция:
Код:
function MyTrim(S: String): String;
var i: Integer;
begin
Result := S;
for i:=1 to Length(Result) do
if(Result[i] = ' ') then
Delete(Result, i, 1);
end;
Функция очень простая, думаю объяснений не надо...
Циклом пробегаем по всем символам строки, и, если находим пробел, удаляем его из результата...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 10.11.2010, 18:23
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

А вот так?
Код:
NewStr := StringReplace(YourStr, #32, '', [frReplaceAll]);
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #4  
Старый 10.11.2010, 19:33
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Основная ошибка ваша в том, что длину строки вы вычисляете сразу, а ведь в результате удаления символов длина тоже будет меняться.
Поэтому начинать надо не с 1 позиции, а с последней, тогда даже если мы удалим символ на следующий проход это влиять не будет.
Код:
 
 for i := Length(s) downto 1
 do if s[i] = ' ' then Delete(s, i, 1);
Как вариант можно формировать новую строку копируя символы из старой но без пробелов:
Код:
s1 := '';
for i := 1 to Length(s)
 do if s[i] <> ' ' then s1 := s1 + s[i];
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 10.11.2010, 22:43
flips flips вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 60
Репутация: 10
По умолчанию

v1s2222, я так сначало писал, но всеравно возвращало ту же строку. Спасибо за старания.
dr. F.I.N., это когда учится, сдается мне что такого не учили или прослушал. То что вы написали очень интересно, спасибо за старания.
Страдалецъ, спасибо, Вы очень помогли. Как-то не подумал насчет длинны строки, но в целом только условие неправильно.
Всем спасибо за старания и помощь.
Ответить с цитированием
  #6  
Старый 23.11.2010, 16:30
flips flips вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 60
Репутация: 10
По умолчанию

Напишите пожалуйста код программы по такому условию:
Обеспечить вывод в компонент TMemo всех целых чисел, попадающих в интервалот n1 до n2 и кратных n3. Определить колличество этих чисел.
Это нужно не мне, а знакомому. Спасибо за внимание.
Ответить с цитированием
  #7  
Старый 23.11.2010, 19:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
s:='';
for i:=n1 to n2 do
 if i mod n3 = 0 then s:=s+inttostr(n3)+' ';
Memo1.lines.Add(s);
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter