Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.048 c
15-1161803262
vidiv
2006-10-25 23:07
2006.11.19
Про то же переименовывание...


2-1162382972
Dalex1984
2006-11-01 15:09
2006.11.19
Ба-а-льшая трабла


15-1162220636
ArtemESC
2006-10-30 18:03
2006.11.19
1988 год


6-1150433786
Lex_!
2006-06-16 08:56
2006.11.19
Sessions в ISAPI приложениях


15-1162052130
TUser
2006-10-28 20:15
2006.11.19
Клавиатура ноутбука





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский