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

Вниз

Чушь получается. Почему? Кто скажет?   Найти похожие ветки 

 
Loginov Dmitry ©   (2006-12-15 20:28) [0]

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TStringList.Create do
 begin
   Text := #13#10"   1"#13#10;
   Text := Trim(Strings[1]);
   ShowMessageFmt(""%s"", [Text]);
   Free;
 end;
end;


 
default ©   (2006-12-15 20:29) [1]

а чё получается не так?


 
Джо ©   (2006-12-15 20:30) [2]

Почему чушь? Все получается, как надо.


 
default ©   (2006-12-15 20:36) [3]

единицу что-ли выдаёт?


 
Джо ©   (2006-12-15 20:41) [4]

Хотя да, последних #13#10 не должно бы остаться в TStringList.Text. Нужно смотреть реализацию GetText.


 
Чапаев ©   (2006-12-15 20:42) [5]

> Чушь получается. Почему? Кто скажет?
Типичный случай СКР... :-D


 
Loginov Dmitry ©   (2006-12-15 20:47) [6]

Такое нормально работает:

procedure TForm1.Button1Click(Sender: TObject);
var
 S: string;
begin

 S := #13#10"   1"#13#10;
 S := Trim(S);
 ShowMessageFmt(""%s"", [S]);

end;


 
Loginov Dmitry ©   (2006-12-15 20:49) [7]

> Нужно смотреть реализацию GetText.


Согласен. Глюк находится здесь.


 
Loginov Dmitry ©   (2006-12-15 20:51) [8]

Хотя наверное так и задумано :))


 
Reindeer Moss Eater ©   (2006-12-15 20:57) [9]

Text := #13#10"   1"#13#10;
Создает список из двух элементов.
Второй элемент strings[1] равен "   1"#13#10
Трим убирает не только пробелы, но и
Trims leading and trailing spaces and control characters from a string.

Присвоение Text := strings[1] присваивает "1" (без CRLF)
Но так как это элемент списка, то CRLF приклеивается к единице уже внутри стринглиста и Текст по прежнему вернет "1"#13#10

Отсюда и результат

"1
"


 
Reindeer Moss Eater ©   (2006-12-15 20:58) [10]

ShowMessageFmt(""%s"", [Trim(Text)]); --> "1"


 
Джо ©   (2006-12-15 20:58) [11]

> Второй элемент strings[1] равен "   1"#13#10

Только несколько нелогично, почему первый элемент может быть #13#10, а последний им быть не может.


 
default ©   (2006-12-15 20:59) [12]

а я думал три элемента будет:)


 
Reindeer Moss Eater ©   (2006-12-15 21:00) [13]

Только несколько нелогично, почему первый элемент может быть #13#10, а последний им быть не может.

Первый элемент - пустая строка


 
Джо ©   (2006-12-15 21:01) [14]

> [13] Reindeer Moss Eater ©   (15.12.06 21:00)
> Только несколько нелогично, почему первый элемент может
> быть #13#10, а последний им быть не может.
>
> Первый элемент - пустая строка

А почему тогда последний ею быть не может?


 
default ©   (2006-12-15 21:06) [15]

я бы ожидал такую логику
встаём на первую строку
видим #13#10 - переходим на вторую(первая строка - пустая)
потом выводим во вторую строку "  1"
потом увидели #13#10 - переход на третью строку
поскольку в третий строке тоже как и в первой нету символов - тоже пустая
это банальная логика, такой и ждут разработчики
надо устанавливать правила с позиции "наименьшего удивления" для клиента:)



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

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

Наверх




Память: 0.5 MB
Время: 0.042 c
8-1147588836
Илья Щукин
2006-05-14 10:40
2007.01.07
Организация плейлиста


15-1166476567
ArtemESC
2006-12-19 00:16
2007.01.07
Какая функция в библиотеках С переводит число в строку?


15-1166467423
Kolan
2006-12-18 21:43
2007.01.07
По каккому признаку упорядочить файлы и папки на винте?


15-1166296486
ArtemESC
2006-12-16 22:14
2007.01.07
Как это читается?


15-1166515691
vidiv
2006-12-19 11:08
2007.01.07
реклама в бесплатном хостинге