Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Удаление лишних пробелов Tedit

Автор: klem4 20.10.2006 18:48

Простейшая проблема : В TEdit есть текст, нужно удалить пробелы в начале и конце, то есть из строки

s = ' string ';

долна получиться строка

s = 'string';

На Паскале такой код отрабаывает без ошибок (пока только для начала строки):

while (s[1] = ' ') and (Length(s) > 0) do Delete(s, 1, 1);


Работает безошибочно, даже если ввести строку, полностью состоящую из пробелов, в делфи же, если TEdit содержит _только_ пробелы, такой код вызывает Access violation ... Почему ?

procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
s := Edit1.Text;
while (s[1] = ' ') and (Length(s) > 0) do Delete(s, 1, 1);
end;

Автор: volvo 20.10.2006 18:51

Потому, что надо СНАЧАЛА проверять длину, и если она НЕнулевая, обращаться к s[1], иначе ты обращаешься к "запредельной территории"...

Автор: klem4 20.10.2006 18:53

логично =(

Спасибо.

Автор: мисс_граффити 21.10.2006 16:07

А почему ты не хочешь пользоваться подавлением пробелов типа Trim?

Автор: klem4 21.10.2006 17:36

Цитата(мисс_граффити @ 21.10.2006 13:07) *

А почему ты не хочешь пользоваться подавлением пробелов типа Trim?


Видимо, потомучто не знал о существовании такой функции smile.gif Теперь буду пользоваться, псасибо ;)