![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Траблы со чтением конечных пробелов из строкового поля [D5, dBase, FoxPro]
sashag © (2002-04-10 13:35:00)Если строка меньше длины поля, то конечные пробелы обрезаются, если строка содержит #0, то читается только часть строки - до символа #0. При использовании метода GetData() строка читается полностью, за исключением конечных пробелов - они заменяются на #0. Можно-ли каким-либо способом прочитать всю символьную строку как есть на уровне байтов?
sashag (2002-04-11 11:45:00) [1]Пример : символьное поле FIELD1 длинной 12 символов содержит строку вида "ASVDF"#0"E265"#0" " - строка записана в синтаксисе Delphi.
При выполнении
s := Table1.FieldByName("FIELD1").AsString
s = "ASVDF"
При выполнении
var S : ShortString;
Buff: Array [1..255] of Char;
with FieldByName("FIELD1") do
begin
try
if not GetData(@Buff) then
MessageDlg(DisplayName + " is NULL", mtInformation, [mbOK], 0)
else
Begin
l:=12 {DataSize};
S:=Replicate(" ",l);
For i:=1 to l Do S[i]:=Buff[i];
End;
finally
end;
Значение переменной s="ASVDF"#0"E265"#0#0
т.е. завершающий пробел заменяется на #0
Anatoly Podgoretsky (2002-04-10 14:44:00) [2]Это ошбика VCL или самого BDE
Владислав (2002-04-10 14:26:00) [3]Что значит "читается"? Приведи код. Используй тип поля TBytesField.
Reindeer Moss Eater (2002-04-10 13:38:00) [4]Может не стоит хранить двоичные данные в стринговых полях?