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

Вниз

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

 
dim2001 ©   (2006-10-05 13:22) [0]

подскажите как отбросить хвостовые пробелы в строке


 
clickmaker ©   (2006-10-05 13:26) [1]

TrimRight


 
SerJaNT ©   (2006-10-06 04:15) [2]

Зачем отбрасывать, он же заново отрастет!


 
SerJaNT ©   (2006-10-06 04:17) [3]

А если серъезно:

procedure LTrim(var s : string);

begin

 while ((length(s) > 0) and

        (s[1] = #32)) do

   Delete(s, 1, 1);

end;

procedure RTrim(var s : string);

begin

 while ((length(s) > 0) and

        (s[Length(s)] = #32)) do

   Delete(s, Length(s), 1);

end;

procedure Trim(var s : string);

begin

 LTrim(s);

 RTrim(s);

end;


 
Ketmar ©   (2006-10-06 05:06) [4]

>[3] SerJaNT(c) 6-Oct-2006, 04:17
больше такого не пиши. пусть учать стандартные библиотеки. %-)


 
Джо ©   (2006-10-06 05:33) [5]

> [4] Ketmar ©   (06.10.06 05:06)
> >[3] SerJaNT(c) 6-Oct-2006, 04:17
> больше такого не пиши.

Да, да. Нечего крайне неоптимальный и идеологически вредный код в "Начинающих" постить :)


 
SerJaNT ©   (2006-10-06 05:42) [6]

или просто trim()


 
Джо ©   (2006-10-06 05:49) [7]

> [6] SerJaNT ©   (06.10.06 05:42)
> или просто trim()

Trim удаляет не только "хвостовые" пробелы.


 
SerJaNT ©   (2006-10-06 06:18) [8]

а что еще?


 
Думкин ©   (2006-10-06 06:21) [9]

> Джо ©   (06.10.06 05:49) [7]

TrimRight тоже.
В смысле - не только пробелы.


 
SerJaNT ©   (2006-10-06 06:21) [10]

вот есть еще

http://kladovka.net.ru/delphibase/?action=viewfunc&topic=strchange&id=10066


 
Думкин ©   (2006-10-06 06:31) [11]

> SerJaNT ©   (06.10.06 06:18) [8]

Еще и мордовые тоже.


 
Джо ©   (2006-10-06 06:48) [12]

> [8] SerJaNT ©   (06.10.06 06:18)
> а что еще?

Вместо того, чтобы задавать поспешные вопросы, лучше бы над своим кодом в [3] задумался и, вдумавшись, исправил его :)

Впрочем, Думкин в [11] уже ответил :)


 
SergP ©   (2006-10-06 07:26) [13]


> [0] dim2001 ©   (05.10.06 13:22)
> подскажите как отбросить хвостовые пробелы в строке


Ну например по такому принципу:
...
i:=length(a);
while a[i]=#32 and i>0 do dec i;
setlength(a,i);
...


 
Думкин ©   (2006-10-06 07:35) [14]


> while a[i]=#32 and i>0 do dec i;

while (i>0) and (a[i]=#32) do dec i;


 
Gydvin ©   (2006-10-06 07:39) [15]

А как этот?

function ltrim(s: string): string;
 var
   i, x: integer;
 begin
   result := "";
   if s = "" then exit;
   i := 0;
   for x := 1 to length(s) do
     if s[x] = " " then inc(i) else break;
   if i > 0 then delete(s, 1, i);
   result := s;
 end;

 function rtrim(s: string): string;
 var
   x, i: integer;
 begin
   result := "";
   if s = "" then exit;
   i := 0;
   for x := length(s) downto 1 do
     if s[x] = " " then inc(i) else break;
   if i > 0 then delete(s, x + 1, i);
   result := s;
 end;


 
SergP ©   (2006-10-06 07:44) [16]

> [14] Думкин ©   (06.10.06 07:35)
>
> > while a[i]=#32 and i>0 do dec i;
>
> while (i>0) and (a[i]=#32) do dec i;


знаю... просто писал прямо на форум и не думал о правильно синтаксисе...
кстати там еще одна синтаксическая ошибка есть...


 
Думкин ©   (2006-10-06 07:44) [17]

> Gydvin ©   (06.10.06 07:39) [15]

Чем не нравится цикл while и почему счетчик цикла используется за его пределами?


 
Думкин ©   (2006-10-06 07:45) [18]

> SergP ©   (06.10.06 07:44) [16]

Да увидел. Но дело не в синтаксисе.


 
Palladin ©   (2006-10-06 07:45) [19]


> Gydvin ©   (06.10.06 07:39) [15]


очень плохо


 
SergP ©   (2006-10-06 07:45) [20]

> [15] Gydvin ©   (06.10.06 07:39)


А компилятор не ругается на использование переменной цикла for за пределами цикла?


 
SergP ©   (2006-10-06 07:46) [21]

> [18] Думкин ©   (06.10.06 07:45)
> > SergP ©   (06.10.06 07:44) [16]
>
> Да увидел. Но дело не в синтаксисе.


а.. понял...


 
Loginov Dmitry ©   (2006-10-06 07:48) [22]

вместо
 if s[x] = " "
следует писать
 if Ord(s[x]) <= Ord(" ")

о чем и намекали неоднократно


 
Думкин ©   (2006-10-06 07:50) [23]

> Loginov Dmitry ©   (06.10.06 07:48) [22]

Почему?


 
SergP ©   (2006-10-06 07:54) [24]

> [22] Loginov Dmitry ©   (06.10.06 07:48)
> вместо
> if s[x] = " "
> следует писать
> if Ord(s[x]) <= Ord(" ")
>
> о чем и намекали неоднократно


В [0] речь шла только о пробелах...


 
Gydvin ©   (2006-10-06 07:59) [25]


> счетчик цикла используется за его пределами

а по какой причине нельзя использовать?


 
Loginov Dmitry ©   (2006-10-06 08:00) [26]

SergP ©   (06.10.06 7:54) [24]
В [0] речь шла только о пробелах


Ну а зачем переписывать стандартные функции Trim с ущемлением функциональности, когда без всякого телепатора ясно, что автор хочет избавиться не только от пробелов, но и от всех незначащих символов, код которых находится до пробела.


 
Думкин ©   (2006-10-06 08:04) [27]

> когда без всякого телепатора ясно, что автор хочет избавиться
> не только от пробелов,

Это уже филлософия. Сказано про пробелы - значит пробелы.

> Gydvin ©   (06.10.06 07:59) [25]

А вы уверены в его значении по окончании цикла?


 
Palladin ©   (2006-10-06 08:04) [28]


> а по какой причине нельзя использовать?

для тебя в первую очередь по причине предупреждения компилятора


 
Джо ©   (2006-10-06 08:06) [29]

> [25] Gydvin ©   (06.10.06 07:59)
>
> > счетчик цикла используется за его пределами
>
> а по какой причине нельзя использовать?

Потому, что, согласно стандарту языка Паскаль, его значение за пределами цикла неопределено. То есть, совершенно не гарантируется, что в нем будет содержаться какое-то определенное значение.


 
Gydvin ©   (2006-10-06 08:11) [30]

Понятно этого я не знал. Впринципе в моем коде можно использовать счетчик  (i)


 
SergP ©   (2006-10-06 22:35) [31]

> Ну а зачем переписывать стандартные функции Trim с ущемлением
> функциональности, когда без всякого телепатора ясно, что
> автор хочет избавиться не только от пробелов, но и от всех
> незначащих символов, код которых находится до пробела.


Без телепатора можно только догадываться, но никак не знать наверняка...


 
Anatoly Podgoretsky ©   (2006-10-07 01:10) [32]

Это не счетчик цикла, а обычная переменная, поэтому нормально.


 
Anatoly Podgoretsky ©   (2006-10-07 01:10) [33]

Или речь про 15?


 
Думкин ©   (2006-10-07 06:03) [34]

> Anatoly Podgoretsky ©   (07.10.06 01:10) [33]

Про 15 - вторая функция.



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

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

Наверх




Память: 0.54 MB
Время: 0.049 c
15-1158908372
megabyte-ceercop
2006-09-22 10:59
2006.10.22
Расширения к Delphi6 или Builder`у


3-1156418446
Виталий Юрьевич
2006-08-24 15:20
2006.10.22
ADO_TABLE и DBGRID - проблема с отображением информации


15-1159441851
Palladin
2006-09-28 15:10
2006.10.22
Авторизация на сервере


6-1148917120
g-l-u-k
2006-05-29 19:38
2006.10.22
Помогите разобраться


15-1157303391
VirEx
2006-09-03 21:09
2006.10.22
Кто слушает РЭП?