Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизНаписание потомка DataSet Найти похожие ветки
← →
Inq (2006-09-19 22:59) [0]Цель такая: "Написать компонент-потомок DataSet, реализующий "Виртуальную таблицу". Сам компонент не хранит в себе данные, а лишь предоставляет методы доступа к ним. Компонент должен поддерживать индексацию, поиск, события On... и т.д."
Вопросы у меня к Вам такие:
1. Где и в каком виже можно хранить данные, если используешь такой компонент?
2. Собственно, для чего такой компонент можно использовать? Какой механизм работы программы с таким компонентом?
← →
Petr V. Abramov © (2006-09-19 23:14) [1]> Собственно, для чего такой компонент можно использовать? Какой механизм работы программы с таким компонентом?
сойдет и для баловства, и для дела :)
В RxLib что-то такое есть, поизучайте исходники. Правда, там нет индексации, но тут уж Кнудт Вам в помощь.
← →
Anatoly Podgoretsky © (2006-09-19 23:31) [2]Зачем писать, если ты не знаешь зачем это нужно.
← →
DrPass © (2006-09-19 23:42) [3]
> Зачем писать, если ты не знаешь зачем это нужно
В 99.9% случаев такая формулировочка -это верный признак того, что педагог заставил...
> 1. Где и в каком виже можно хранить данные, если используешь
> такой компонент?
Где данные можно хранить? Правильно, на диске и в ОЗУ
> Собственно, для чего такой компонент можно использовать?
Задаюсь тем же вопросом. Ну, может быть, для удобного экспорта отформатированных текстовых файлов можно приспособить...
← →
Inq (2006-09-20 01:16) [4]В 99.9% случаев такая формулировочка -это верный признак того, что педагог заставил...
Так и было...
← →
atruhin © (2006-09-20 12:31) [5]> [4] Inq (20.09.06 01:16)
Постарайся взять у педагога другое задание. Дело в том что написание нормально работающего датасета, полностью ни где не документированно. Искал на русском и на английском, ни чего :(. Где то встречал что Борланд сам отсылает к исходникам. Если возмешся писать буди готов изучать материал разбирая чужие исходные тексты.
PS Хотя если написать просто чтобы сдать, то можно попробовать по литературе (Тексейра & Паченко, Кнут) и по статьям, немного есть.
← →
sniknik © (2006-09-20 12:52) [6]> Дело в том что написание нормально работающего датасета, полностью ни где не документированно.
а в хелпе смотрели?
хотя не уверен, вернее, наверняка нет того, чего подозреваю ждали... типа "пособие по созданию датасет для чайников, по шагам с 0 и до получения продукта на выходе после прочтения"... нет. такого нет. но описания работы, исходные коды, простой пример от борланда, это все есть.
← →
atruhin © (2006-09-20 13:08) [7]> [6] sniknik © (20.09.06 12:52)
Остряк! Зачем такие высказывания о проблемме которой ни когда не занимался? Т.к. если бы занимался то знал, что в хелпе на половину внутренних методов (которые НЕОБХОДИМЫ для создания DS) нет описания, другие вообще не упомянуты.
← →
sniknik © (2006-09-20 13:25) [8]с чего решил что не занимался?... пример смотрел... и значит знаю уже похоже больше тебя по этому вопросу...
> которые НЕОБХОДИМЫ для создания DS
в вопросе (и вообще) нет необходимости писать его с нуля, там говорится о наследнике... в родителе которого эти "необходимые" внутренние методы уже есть... а что действительно нужно так это реализовать методы взаимодействия с datasource, вот по ним подозреваю есть полная инфа (неохота смотреть).
← →
atruhin © (2006-09-20 13:52) [9]> [8] sniknik © (20.09.06 13:25)
Ерунду говорите товарищь. Я раньше к Вам серьезнее относился.
По вопросу.
> а что действительно нужно так это реализовать методы взаимодействия
> с datasource
Вот как ни странно, а именно это уже реализованно в датасете, и трогать это не нужно.
> вот по ним подозреваю есть полная инфа (неохота смотреть)
В том то и проблемма, что ты подозреваешь, а я знаю о чем говорю.
> пример смотрел... и значит знаю уже похоже больше тебя по
> этому вопросу
Мало знаешь, по этому вопросу, точнее ничего не знаешь. Так как пример показывает вывод в 1 столбец нескольких строк, и его невозможно расширить, он не правильно спроектирован. Как я уже говорил Борланд отсылает не к примеру а исходникам.
> в вопросе (и вообще) нет необходимости писать его с нуля,
> там говорится о наследнике
Я о нем и говорю. И если ты готов спорить, могу привести 3 вопроса НЕОБХОДИМЫХ для создания потомка, а Вы найдете описание реализации/методов в хелпе/литературе, не в исходниках. А пока с Вашей стороны пустые некомпетентные высказывания.
← →
Anatoly Podgoretsky © (2006-09-20 14:01) [10]Пока абстрактный наезд, хочешь, что бы он был конкретным, то приводи конкретику.
← →
atruhin © (2006-09-20 15:12) [11]Ну что же, привоже конкретику.
1. О примере в поставке Delphi. Открываем пример, в датасет добавляем вычисляемое поле, смотрим что получилось. Пытаемся заставить нормально работать :).
2. По вопросам.
например метод ClearCalcFields(Buffer: PChar), как он должен работать? А главное, перекрывать его нужно обязательно, но в хелпе он не упомянут.
← →
Inq (2006-09-20 15:17) [12]>>> Постарайся взять у педагога другое задание. Дело в том что написание нормально работающего датасета, полностью ни где не документированно. Искал на русском и на английском, ни чего :(
Взять другое задание пытался ещё во время выдачи :) Не вышло.
Единственная статья, которую я нашёл - http://www.delphimaster.ru/articles/dataset/index.html
← →
atruhin © (2006-09-20 15:23) [13]Процедуры:
function GetFieldData(Field: TField; Buffer: Pointer): Boolean;
procedure SetFieldData(Field: TField; Buffer: Pointer);
Должны сохранять/возвращать значение для поля Field, что принципиально неправильно реализованно в примере TextData, и как должно быть?
← →
atruhin © (2006-09-20 15:28) [14]> [12] Inq (20.09.06 15:17)
Не плохая, только лучше возьми с сайта Николая, http://www.stikriz.narod.ru/, и скачай исходники, они неплохо прокоментированны.
Посмотри также:
http://www.rsdn.ru/article/delphi/dbaware.xml
← →
atruhin © (2006-09-20 15:29) [15]> [10] Anatoly Podgoretsky © (20.09.06 14:01)
На вопросы которые я задал выше, нужен не ответ, а ссылка на хелп или литературу где это описанно.
← →
sniknik © (2006-09-20 15:43) [16]atruhin © (20.09.06 15:12) [11]
> Открываем пример, в датасет добавляем вычисляемое поле ...
открыли, добавили, нормально работает... (не заставлял)
> А главное, перекрывать его нужно обязательно
с чего это обязательно? насколько понимаю это на усмотрние разработчика (тебя то есть), если ничего не выделял то ничего и чистить не нужно.
Inq (20.09.06 15:17) [12]
> Единственная статья, которую я нашёл
вполне нормальная, информативная статья. + дельфевский пример + немного усилий = сдача курсовой...
(большой недостаток статьи конечно (для тебя), что нет готового примера "вывода" который можно просто скачать и сдать как свое... ну ищи дальше, наверняка есть гдето и готовое)
← →
atruhin © (2006-09-20 15:43) [17]> [10] Anatoly Podgoretsky © (20.09.06 14:01)
Кстати, только что посмотрел, в "Delphi 5, Руководство разработчика" Тейксейра, Пачеко в методах GetFieldData, SetFieldData есть очень грубая ошибка.
← →
sniknik © (2006-09-20 15:45) [18]> нужен не ответ, а ссылка на хелп или литературу где это описанно.
а мне нужна ссылка на документацию на MySuperPuperMethod(), я его весде использую (сам и написал), а документации почемуто до сих пор не встречал...
← →
atruhin © (2006-09-20 15:54) [19]> открыли, добавили, нормально работает... (не заставлял)
А то что в Calculeted поле отображает данные первого поля вы считаете нормально? (delphi 6, delphi 7)
> с чего это обязательно? насколько понимаю это на усмотрние
> разработчика (тебя то есть), если ничего не выделял то ничего
> и чистить не нужно.
В том то и дело что нет, этот буфер выделяет TDataset, при создании пользователем вычисляемых полей.
> вполне нормальная, информативная статья. + дельфевский пример
> + немного усилий = сдача курсовой...
Я непосредственно учавствовал в разработке компонент описанных в статье (в основном именно доводка датасета, так как он наиболее полно соответствовал моей задаче). И обсуждали с Николаем неописанные в статье моменты, описанные неточности :) и т.д. Была идея доделать статью, но ни у кого не было времени.
← →
atruhin © (2006-09-20 16:09) [20]> [18] sniknik © (20.09.06 15:45)
Ну мы говорим не о Вашем MySuperPuperMethod(), а о написании потомка датасета. Причем даже не о том сложно или нет его написать, а о отсутствии документации, и неверных сведениях в литературе например см.
> [17] atruhin © (20.09.06 15:43)
А ошибка там существенная. Т.к. Field.Index - индекс поля для отображения и сответствует номеру поля только изначально, если например передвиныть поле в DBGrid, то начнутся интересные глюки.
А для правильного определения номера поля, необходимо использовать, примерно такую конструкцию:
if Field.Calculated then
Result:=(PChar(Buffer)+FCalckPosition+Field.Offset)
else
Result:=(PChar(Buffer)+FListOffsets[Field.FieldNo]);
← →
sniknik © (2006-09-20 16:55) [21]> А то что в Calculeted поле отображает данные первого поля вы считаете нормально? (delphi 6, delphi 7)
картинку показать? у меня показывает или пусто или то что я туда "насчитал" (D7). "считал" в onGetText т.к. в примере не многие свойства/события попросту не выведены/нереализованы код (когда он был, и был мой геттекст) был Text:= IntToStr(Sender.DataSet.RecNo);.
никаких исправлений кода примера кроме этого не делал.
← →
atruhin © (2006-09-20 17:11) [22]> onGetText
Это не имеет отношения к вычисляемым полям.
Все хватит спорить. Я аргементы привел. Дальше пусть каждый останется при свем мнении.
← →
sniknik © (2006-09-20 17:53) [23]> Это не имеет отношения к вычисляемым полям.
согласен, но как еще оценивать нереализванную часть? (это же пример`с!) где брать onCalcFields при его остутствии? (где ты его взял в том примере?)
> Все хватит спорить. Я аргементы привел. Дальше пусть каждый останется при свем мнении.
еще раз согласен.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.044 c