Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.024 c
14-1100379959
PURGEN
2004-11-14 00:05
2004.11.28
Тупой вопрос


1-1100610211
Chery
2004-11-16 16:03
2004.11.28
Как Borland Socket Server сделать службой ?


1-1100061003
officeman
2004-11-10 07:30
2004.11.28
про tStringList.Create


3-1099388991
Tolya
2004-11-02 12:49
2004.11.28
Тип поля date и Memo


8-1093585257
Submarine
2004-08-27 09:40
2004.11.28
Просмотреть средствами Delphi многостраничный tif




   Наверх