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

Вниз

Проблема с TField.SetData   Найти похожие ветки 

 
Oxy ©   (2002-12-18 13:25) [0]

Помогите с TField.SetData. Я пробовал его использовать но не работает.
Фрагмент кода

Var
buf:Array[0..253] Of Char;
bsz,Len:Integer;
ff2:TField;
Begin
t1.edit;
Len := ff.DataSize - 1;
bsz:=len+1;
ZeroMemory(@buf,SizeOf(buf));
If ff.GetData(@buf) then Begin
ff2:=t1.Fields[3];
ff2.SetData(@buf,false);
End;
Post;
..............................
End;

Я здесь пытаюсь переписать данные из поля одной таблицы в поле другой таблицы напрямую без преобразований. Но не работает. Даные из буфера не переписываются в поле второй таблицы. Оно остается пустым.
Где ошибка?


 
Johnmen ©   (2002-12-18 13:46) [1]

Где ты обчитался такой лабуды ? Будь проще !
ff2["имя поля"]:=ff["имя поля"];


 
Oxy ©   (2002-12-18 13:53) [2]

Не, нельзя так. У меня поле исходной таблицы типа CHAR. Но в нем записана всякая лабуда где встречается также символ с кодом #0. Если сделать так как ты предлагаешь, то результат обрежется по этому нолевому символу и у меня перепишется не вся строка.


 
Reindeer Moss Eater   (2002-12-18 13:56) [3]

К блоб полям ни GetData ни SetData неприменимы!


 
Oxy ©   (2002-12-18 13:58) [4]

Это не блоб поле. Это простое 254 символьное CHAR поле.


 
Reindeer Moss Eater   (2002-12-18 14:00) [5]

>Oxy
В какой автошколе учились?
Хранить #0 в символьных полях????


 
Oxy ©   (2002-12-18 14:02) [6]

Блин, какое это имеет значение. Мне надо вот и храню. Вопрос был как использовать SetData...


 
OlegE ©   (2002-12-18 14:27) [7]

У меня данный код работает.
Попробуй объявить вместо Array of CHAR - Array of BYTE
....
var
ECPFile:array [1..64] of byte;
Sign:array[1..128]of Byte;

....
DataModule1.Query1.FieldByName("ECP").GetData(@ECPFile);

...
DataModule1.tlbFiles.FieldByName("ECP").setdata(@Sign);


 
Oxy ©   (2002-12-18 14:43) [8]

Провел серию экспериментов и выяснил, что
1. вне зависимости от типа буфера если указать setdata(@buf, False) данные не записываются.
2. если указать setdata(@buf, true), то вне зависимости от типа буфера данные обрезаются по первому попавшемуся нулевому символу. Ну это и понятно, при этом данные приводятся к типу CHAR (напомню, что я записываю в поле типа CHAR).

Соответственно, появилось 2 вопроса:
1. нафига борланд ввел этот второй параметр в методе setdata(), если при его равенстве False метод ничего не делает?
2. как мне всетаки переписать данные?


 
Oxy ©   (2002-12-18 15:31) [9]

Help!!!


 
Reindeer Moss Eater   (2002-12-18 15:55) [10]

Двоичные данные на хранят в полях, для этого не предназначенных, но Мне надо вот и храню.
Удачи тогда тебе


 
Oxy ©   (2002-12-18 17:50) [11]

Дык, выбора у меня нет. Надо именно так. Таблицу должен понимать клиппер, а он не поддерживает blob поля :-(


 
Oxy ©   (2002-12-18 20:16) [12]

Help!!!


 
Anatoly Podgoretsky ©   (2002-12-18 22:53) [13]

Reindeer Moss Eater (18.12.02 14:00)
Формат dBase и FoxPro это разрешает, вот только БДЕ с этим работает не так.


 
Reindeer Moss Eater   (2002-12-19 08:57) [14]

Я прекрасно представляю, что dBase это всего лишь двоичный файл, в который можно писать любое из $FF значений байта.
Так и наздоровье. Но только используя знания о структуре dbase и методы работы с двоичными файлами.


 
OlegE ©   (2002-12-19 09:08) [15]

Повторюсь:
У меня данный код работает.
Попробуй объявить вместо Array of CHAR - Array of BYTE
....
var
ECPFile:array [1..64] of byte;
Sign:array[1..128]of Byte;

....
DataModule1.Query1.FieldByName("ECP").GetData(@ECPFile);

...
DataModule1.tlbFiles.FieldByName("ECP").setdata(@Sign);

Используется ДВЕ программы.
ПЕРВАЯ- поле объявлено как BYTE.
ВТОРАЯ- поле обявлено как CHAR.

Первая записывает и считывает данные.
ВТОРАЯ- старая, чужая, DOS-овская, только ститывает, используется- потому что нужно.
Такой тандем работает с 1995 года. Никаких проблем.



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

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

Наверх




Память: 0.5 MB
Время: 0.021 c
6-37234
Grigor
2002-11-12 17:34
2003.01.13
Как дождаться окончания выполнения внешнего приложение


14-37360
dmk
2002-12-24 22:12
2003.01.13
Не работает SMTP сервер !!! :(


1-37213
jen_bond
2002-12-30 21:41
2003.01.13
Запись информации в ini


1-37138
Yurko
2002-12-29 03:22
2003.01.13
IconChange


4-37448
Lony
2002-11-24 20:38
2003.01.13
CreateThread