Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
3-36992
Sheeva
2002-12-19 09:23
2003.01.13
1нф > 2нф > 3нф База на Нужна помощь!


1-37014
Miv
2003-01-01 16:04
2003.01.13
Как с помощью мышки в TlistBox е можно строчки местами менять...?


3-36980
sanilo
2002-12-17 15:05
2003.01.13
Транзакции


14-37350
gsu
2002-12-23 16:39
2003.01.13
А я на счетах работать умею, слабо ?


14-37355
Свой
2002-12-20 11:44
2003.01.13
Создание ОС





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский