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

Вниз

Написание потомка 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.037 c
3-1158743677
kaif
2006-09-20 13:14
2006.11.19
Преемственность данных и суррогатные ключи


1-1159873426
Icon
2006-10-03 15:03
2006.11.19
Использование иконок различного размера


9-1139153587
VolanD666
2006-02-05 18:33
2006.11.19
Collision Detection


15-1162375283
Карелин Артем
2006-11-01 13:01
2006.11.19
Зарплаты/жилье в Подольске. Что почем?


2-1162407757
despo
2006-11-01 22:02
2006.11.19
Есть ли ограничение на длину sql скрипта в TQuery?