Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с Проблема с TField.SetData / 16 сообщений из 16, страница 1 из 1
18.12.2002, 17:54
    #32081293
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Обращаюсь к тем кто программирует на делфе и кто стыкался с этим методом.
Мне надо в поле типа CHAR dbf-таблицы записать бинарные данные.
Провел серию экспериментов и выяснил, что
1. вне зависимости от типа буфера если указать setdata(@buf, False) данные не записываются.
2. если указать setdata(@buf, true), то вне зависимости от типа буфера данные обрезаются по первому попавшемуся нулевому символу. Ну это и понятно, при этом данные приводятся к типу CHAR (напомню, что я записываю в поле типа CHAR).

Соответственно, появилось 2 вопроса:
1. нафига борланд ввел этот второй параметр в методе setdata(), если при его равенстве False метод ничего не делает?
2. как мне всетаки переписать бинарные данные в это поле если в них встречается символ с кодом 0?
...
Рейтинг: 0 / 0
18.12.2002, 18:07
    #32081303
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
появилось два ответа:

Use SetData to assign data to a field in the format that is used by the underlying database table.
прим.2
Ultimately, any method of setting the data for the field component calls SetData, once the data has been parsed into the format expected by the database table.
SetData calls the OnValidate event handler before writing the data to the current record buffer. If the data is successfully written, SetData calls the OnChange event handler.

Buffer contains the field value in the field components underlying type.
ответ 1:
NativeFormat indicates whether the value in Buffer must be translated before the dataset assigns its value to its internal record.

ответ 2 (см.прим.2): не пользоваться методом TField.SetData.
...
Рейтинг: 0 / 0
18.12.2002, 18:33
    #32081330
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
А чем пользоваться?
Мне надо как то их записать.
...
Рейтинг: 0 / 0
18.12.2002, 18:36
    #32081332
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
поищи компоненты от сторонних производителей
...
Рейтинг: 0 / 0
18.12.2002, 18:40
    #32081334
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Да вот нашел один. Tdbf называется. Он использует вс. функциональность от TDataSet так как порожден от него. Единственно е что он сам делает это пишет на диск не используя BDE. Соответственно, толку от него никакого.
Может посоветуешь каки либо компоненты другие.
...
Рейтинг: 0 / 0
18.12.2002, 18:57
    #32081353
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
давно не работал с dbf - трудно что-то подсказать...
помню когда-то писал через объекты Turbo Vision, но их уже не найти...
в принципе, если задача однопользовательская, можно писать в файл, посмотреть заголовок dbf, сделать record на OPascal'e и туда его, но пока прицелишься - намучишься...

может переводить эти бинарные данные в char перед записью? побайтно?
...
Рейтинг: 0 / 0
18.12.2002, 19:11
    #32081362
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
>может переводить эти бинарные данные в char перед записью? побайтно?

Дык, именно так и делаю. Но как их теперь туда записать. Если пишешь, то они обрезаются по нулю. Соответственно, строка целиком не записывается. :-(
...
Рейтинг: 0 / 0
18.12.2002, 19:20
    #32081370
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
хмм...может ссылочку писать на файл в поле и эти данные куда-нибудь в отдельный каталог, файлы f0001.bin and so on?
...
Рейтинг: 0 / 0
18.12.2002, 19:42
    #32081385
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Не, так я не могу. Это должна быть DBF. Ее потом клиппер читать должен.
Может в самом деле буду сам напрямую в файл писать.
...
Рейтинг: 0 / 0
18.12.2002, 19:56
    #32081387
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
можно конечно самому написать компонент для работы с этой мутью, посмотри что легче...

а зачем вообще бинарные данные писать в чар?
может как-то можно обойти этот столб?
...
Рейтинг: 0 / 0
18.12.2002, 19:59
    #32081388
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Не, это зашифрованые данные. Их потом прога на клипере читает и расшифровывает. После расшифровки это простая строка. Просто переписывать прогу эту я не хочу, да и не знаю на клиппере программить, но надо сделать для нее примочку.
...
Рейтинг: 0 / 0
18.12.2002, 20:02
    #32081389
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
так может сделать такую шировку чтоб без нуля?
и писать себе спокойно? или это уже готовый модуль? в смысле шифрования?
...
Рейтинг: 0 / 0
18.12.2002, 20:05
    #32081392
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
шифровку в смысле
...
Рейтинг: 0 / 0
18.12.2002, 20:11
    #32081395
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Эта клипперовская прога использует этот метод шифрования. И я ей подставляю данные в том виде который она ждет. Прсто мои примочки работают гораздо быстрее чем эта клипперовская прога. Но и ее отбросить нельзя. Приходится подстраиваться.
...
Рейтинг: 0 / 0
18.12.2002, 20:13
    #32081396
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
короче извраты...
придётся мучаться...
...
Рейтинг: 0 / 0
18.12.2002, 20:14
    #32081397
Oxy
Oxy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с Проблема с TField.SetData
Точно :-(
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблемы с Проблема с TField.SetData / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]