Главная страница
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
Время: 1.365 c
15-1166173142
alex_***
2006-12-15 11:59
2007.01.07
Не работает сайт. Какие службы должны быть запущены


6-1155234489
anton773
2006-08-10 22:28
2007.01.07
idhttp загрузка файла


2-1166200832
Просто Коля
2006-12-15 19:40
2007.01.07
Изменение рпзмеров Контроллов


5-1146224510
misyachniy
2006-04-28 15:41
2007.01.07
Ошибка при объявлении property .


2-1166181253
vain
2006-12-15 14:14
2007.01.07
TaskBar, Alt+Tab