Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Строка и символы ... трабла [D7, WinXP]


Страницы:   1 2

noob ©   (2004-11-16 01:43:00) 

есть строка - i, как в ней удалитьвсе пробелы ... погоите ламаку


Ega23   (2004-11-16 14:02:00) [1]

function DelSpase(const aStr:String):String;
var
i:Integer;
begin
Result:='';
for i:=1 to Length(aStr) do
 if aStr(i)<>' 'then Result:=Result+aStr(i);
end;


palva   (2004-11-16 13:06:00) [2]

Ребяты, такие задачи решаются следующим образом:
var j: integer;
i:string;
begin
i:='Привет из Москвы';
for j:=Length(i) DownTo 1 if i[j]=' ' then delete(i,j,1);
end;


Zhekson   (2004-11-16 12:14:00) [3]

var
ch: char;

а если, предположим, читать строку посимвольно и если символ = ' ' то к конечной строке не прибавлять этот символ
 else StrOut := StrOut + ch.


Zhekson   (2004-11-16 12:07:00) [4]

если вариант [3] не подходит то попробуй:

Невозможно отобразить страницу

Эта страница сейчас недоступна. Возможно, это вызвано техническими проблемами на веб-узле, или требуется изменение параметров обозревателя.


Zhekson   (2004-11-16 11:58:00) [5]

Давненько я сюда не заглядывал..., а зря... тут всё так же весело...


Verg   (2004-11-16 11:50:00) [6]


> copy(str,2,length(str))


Мдяяя....


Kergma   (2004-11-16 11:38:00) [7]

А можно я, можно.....? :)

function Kill20( str : string) : string;
begin
 if length(str) > 1 then
  result := Kill20(str[1]) + Kill20(copy(str,2,length(str)))
  else
   if str = ' ' then result := '' else result := str;
end;

test passed.


Amoeba   (2004-11-16 11:18:00) [8]

Используй бибилиотеку ф-й для работы со строками QStrings.


begin...end   (2004-11-16 10:56:00) [9]


> [17] Ega23 ©   (16.11.04 10:47)

Да, ты прав, это я ошибся, но всё равно есть другие стандартные функции типа StringReplace или [3].


Ega23   (2004-11-16 10:47:00) [10]

2 begin...end ©   (16.11.04 10:05) [12]

Можно и через while; только я не вижу причин использовать здесь вообще какие-то циклы, поскольку существует стандартная функция Trim.

Trim не удаляет ВСЕ пробелы из строки. Только справа-слева.


begin...end   (2004-11-16 10:16:00) [11]


> [15] Gloomer ©   (16.11.04 10:12)

Молодец; теперь, по крайней мере, код будет корректно работать.


Gloomer   (2004-11-16 10:12:00) [12]

Ну ладно вам, я еще не проснулся :-(
for j:=1 to length(i) do if i[j]<>' ' then i1:=i1+i[j];

>[12] begin...end
надеюсь, я правильно испавился


Verg   (2004-11-16 10:11:00) [13]

Так же предлагаю запретить телепередачу "Спокойной ночи малыши" - об чем они там вообще, деский сад какой-то. Это все уже было лет ц-ать назад.


REA   (2004-11-16 10:09:00) [14]

Было уже год назад. Дошли до того, что стали на асме соревноваться кто лучше удалит. Предлагаю тему удаления пробелов считать запрещенной.


begin...end   (2004-11-16 10:05:00) [15]


> [8] Ega23 ©   (16.11.04 09:28)

Можно и через while; только я не вижу причин использовать здесь вообще какие-то циклы, поскольку существует стандартная функция Trim.

> [9] Gloomer ©   (16.11.04 09:44)

Твоё решение ещё хуже; во-первых, ты не учёл замечание насчёт индексации символов; а во-вторых, в результате выполнения твоего кода строка i либо будет пустой, либо будет содержать 1 символ; хотя даже и так говорить некоректно, из-за некорректности самого кода.


Ega23   (2004-11-16 09:52:00) [16]

Gloomer ©   (16.11.04 09:44) [9]

Ну и что у тебя получится?


Verg   (2004-11-16 09:47:00) [17]

В че сегодня, издеваетесь что ли ?!


Gloomer   (2004-11-16 09:44:00) [18]

> [2] Поручик
Правильнее было бы,как приведено ниже, правда вводится еще одна переменная, но это надеюсь не страшно :-)
var j: integer;
i,i1:string;
begin
i:='Привет из Москвы';
i1:='';
for j:=0 to length(i) do if i[j]<>' ' then i1:=i[j];
i:=i1;
end;

А в общем случае не стоит игнорировать совет ЮЮ[3]


Ega23   (2004-11-16 09:28:00) [19]

Вообще-то такие циклы надо через While организовывать, а не через for ....


begin...end   (2004-11-16 08:56:00) [20]


> [6] Поручик ©   (16.11.04 04:28)


> 1. Это работает в том виде в котором я привел

Как оно может нормально работать? Ты, наверное, что-то путаешь; я уж не говорю о том, что нумерация символов в строке начинается с единицы; включи для верности Range Checking и выполни свой код, о результатах можно не сообщать.

> 2. Для Нуба сойдет.

Чего ж ты Нуба так не уважаешь, он тебе этого не простит.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо