Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Строка и символы ... трабла   Найти похожие ветки 

 
noob ©   (2004-11-16 01:43) [0]

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


 
Поручик ©   (2004-11-16 01:52) [1]

var j: integer;
i:string;
begin
i:="Привет из Москвы";
for j:=0 to length(i) do if i[j]=" " then delete(i,j,1);
end;


 
aus   (2004-11-16 03:39) [2]

при этом length(i) меняется


 
ЮЮ ©   (2004-11-16 03:49) [3]

для ламаков (и не только) есть unit для работы со строками StrUtils:
function AnsiReplaceStr(const AText, AFromText, AToText: string): string;

i := AnsiReplaceStr(i, " ", "");


 
Поручик ©   (2004-11-16 04:17) [4]

aus   (16.11.04 3:39) [2]
при этом length(i) меняется

Это не влияет.


 
Германн ©   (2004-11-16 04:24) [5]

2 Поручик ©   (16.11.04 04:17) [4]
Успехов тебе в борьбе с AV!
И еще. Прочитай где-нибудь, что помимо to есть еще и downto! Ей-богу пригодится в жизни!


 
Поручик ©   (2004-11-16 04:28) [6]

Последнее время меня все за дурака считают.

То, что я написал - правильно в данной ситуации:
1. Это работает в том виде в котором я привел
2. Для Нуба сойдет.


 
begin...end ©   (2004-11-16 08:56) [7]


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


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

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

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

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


 
Ega23 ©   (2004-11-16 09:28) [8]

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


 
Gloomer ©   (2004-11-16 09:44) [9]

> [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]


 
Verg ©   (2004-11-16 09:47) [10]

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


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

Gloomer ©   (16.11.04 09:44) [9]

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


 
begin...end ©   (2004-11-16 10:05) [12]


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

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

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

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


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

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


 
Verg ©   (2004-11-16 10:11) [14]

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


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

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

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


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


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

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


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

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

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

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


 
begin...end ©   (2004-11-16 10:56) [18]


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

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


 
Amoeba ©   (2004-11-16 11:18) [19]

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


 
Kergma   (2004-11-16 11:38) [20]

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

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.


 
Verg ©   (2004-11-16 11:50) [21]


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


Мдяяя....


 
Zhekson   (2004-11-16 11:58) [22]

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


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

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

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

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


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

var
ch: char;

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


 
palva ©   (2004-11-16 13:06) [25]

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


 
Ega23 ©   (2004-11-16 14:02) [26]

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;



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.044 c
6-1095776242
Лев Ландау
2004-09-21 18:17
2004.11.28
}|{ажда знаний ( IdHTTP or IdTCPClient )


14-1100004423
TRyaSS
2004-11-09 15:47
2004.11.28
Кто знает C(си), помогите плз. перевести


14-1100026168
Константинов
2004-11-09 21:49
2004.11.28
О ворованых мобильниках


1-1100571368
Дима
2004-11-16 05:16
2004.11.28
Не видно компонентов на форме


10-1066726234
zxc
2003-10-21 12:50
2004.11.28
возможно ли работа DCOM через Интернет??