![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоение TField.Value или TField.AsString [D5]
harisma © (2010-11-04 18:39:00)Почему, когда я присваиваю TField.Value или TField.AsString значение, состоящее исключительно из пробелов или заканчивающееся на пробелы, то в первом случае получаю просто пустую строку, а во втором случае только текст без завершающих пробелов?
Другими словами:
procedure ...(var AFld: TStringField);
var
s, s1: string;
begin
s: = ' ';
AFld.AsString := s;
....
s1 := AFld.AsString; <-- тут получаю s1 = '' !!!
end;
procedure ...(var AFld: TStringField)
var
s, s1: string;
begin
s: = 'text ';
AFld.AsString := s;
....
s1 := AFld.AsString; <-- тут получаю s1 = 'text' !!!
end;
Как сделать так, чтобы в поле сохранялись данные именно в таком виде, в каком я их передал туда?
sniknik (2010-11-04 20:36:00) [21]> Другими словами:
> procedure ...(var AFld: TStringField);
var лишнее, ты же не меняешь сам объект AFld (передать другой вместо него "наружу"), ты меняешь значение одного из его полей по ссылке, т.е. сделаешь это из одной ссылки, или из ее копии, не суть.
хотя это не по "проблеме", так для информации.
> Как сделать так, чтобы в поле сохранялись данные именно в таком виде, в каком я их передал туда?
поле в базе (а следовательно и в рекордсете после) должно быть типа varchar, а не char. char хранится в виде дополненного пробелами до полной длины, при чтении делается соответственно rtrim. т.е. это нормальное поведение, и обработка конкретного типа в большинстве движков.