Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2006-04-18

Re: СОМ-сервер вернуть коллекцию.

Шистеров Павел пишет:

>Здравствуйте, Komkov,
>
>KO> Возвращай, что-нибудь типа:
>KO> ICollection = interface
>KO> function Count: Integer;
>KO> function Item(Index: Integer): IItem; (или даже IUnknown)
>KO> end;
>Проблем даже больше. Все из-за того, что никак не могу понять СОм и
>Интерфейсы с точки зрения реализации.
>
>
>
Нет, тебе точно нужен Роджерс!!!

>1. Нужно описать интерфейсы Icollection и IItem, затем реализовать их.
>Тут первый затык, что-то не могу врубиться как это сделать. Объекты
>автоматизации создал, а нужно-ли это?
>
>
Давно я с COM не работал :( Насколько помню, объект автоматизации, это
COM объект, который реализует интерфейс IDispatch. Если ты не
собираешься использовать свой сервер из чего-то, типа VB или JS то не нужно.

>2. Как реализовать объекты - тоже ума не приложу. По логике вещей
>можно использовать готовые классы TCollection и TCollectionItem.
>А как?
>
>
Описать свой интерфейс, унаследоватся от TCollection, объявить что класс
реализует этот интерфейс и отобразить методы интерфейса на методы класса.

   2006-04-18 21:36:33 (#539323)

Re: Проеткирование БД классической структуры

Здравствуйте, Neco.

Вы писали 17 апреля 2006 г., 15:24:54:

Проектировать базу данных желательно не на коленке, а с помощью CASE-средств.
Рекомендую ERWIN.
Осваивается довольно-таки быстро(в течении нескольких дней).
И в жизни очень пригодится.

   2006-04-18 21:36:11 (#539321)

Re: СОМ-сервер вернуть коллекцию.

Шистеров Павел пишет:

>Здравствуйте, Komkov,
>
>
>
>>> Проблема, не могу придумать как реализовать метод СОМ-сервера,
>>>который бы возвращал коллекцию объектов.
>>>
>>>
>>>
>KO> Возвращай, что-нибудь типа:
>KO> ICollection = interface
>KO> function Count: Integer;
>KO> function Item(Index: Integer): IItem; (или даже IUnknown)
>KO> end;
>Это-то понятно, что нужно описать интерфейс коллекции. А вот как
>реализовать что-бы именно возвращалось?
>
>В голову приходят следующие шаги:
>1. Описать интерфейс IMyCollection
>2. В методе возвращения данных создать объект IMyCollection - сформировать данные
>3. Присвоить результату указатель на этот объект или Интерфейс?
>
>Прально?
>
Мне не совсем понятна ситуация. У тебя коллекция Объектов3 содержится в
Объект1 или формируется по запросу клиента?
Если первое, то ты просто можешь отобразить методы доступа к коллекции
Объекта1 на интерфейс IMyCollection.
Если второе, то или создать коллекцию внутри Объект1 и опять-же
отобразить методы доступа к ней на интерфейс IMyCollection. или создать
вспомогательный объект с интерфейсом IMyCollection, заполнить и отдать
его интерфейс.

У меня подозрение, что ты малость не понимаешь смысл интерфейсов.
Интерфейс, это вроде public части класса. Может тебе Роджерса "Основы
COM" прислать?

   2006-04-18 21:36:02 (#539320)

Re: Проеткирование БД классической структуры

Original Message From: "Neco" <tempne***@r*****.ru>
To: "comp.soft.prog.prog (2961535)" <burlya***@u*****.ru>
Sent: Monday, April 17, 2006 6:24 PM
Subject: Проеткирование БД классической структуры

> Помогите, пожалуйста, спроектировать базу данных, в которой одно из
> полей содержит информацию о товарах. При этом товары могут быть очень
> различного типа. К примеру, один товар может быть просто "тапочки", а
> другой "авиабилет". Ест-но, что у первого атрибуты имеют не столь
> важное и многообразное значение, как у второго. Авиабилет ведь может
> быть на грузовой или пассажирский рейс. Пассажирский может быть разных
> классов. Плюс отправные и конечные точки, транзиты, если имеются,
> время прибытия и отбытия, номер терминала и может кое-что ещё, что я
> упустил. Конечно можно просто на месте тапочек взять и записать всю
> инфу, но тогда увеличивается вероятность опечатки оператора, падает
> скорость набивания базы и увеливается размер самой базы (одни и те же
> значения). Кроме того нет возможности выбрать подробности о каком-либо
> пункте. Типа как, если город у нас забит просто в тектовом формате, то
> я не могу парсить всю строку, вытаскивать оттуда название, искать в
> базе городов и давать, если есть, ссылку.
>
> А ведь могут быть не только авиарейсы - билеты в кинотеатры, тарифы
> сотовых операторов да вообще ВСЁ должно заноситься в эту базу по
> единому шаблону - если один раз что-то забили, то в будущем это надо
> только выбирать из комбо, но не перебивать.
>
> Я придумал один вариант (одно поле в товара - ссылка на структуру и
> ещё одно - значения этой структуры), но всё получилось очень запутанно
> - объяснять операторам, как этим пользоваться - вилы!
>
> Как это делается по-нормальному?!
>
>
А если хранить информацию в нескольких табличках?
Создать табличку с типами товаров (все товары можно разбить на типы: обувь,
билет, тариф оператора сотовой связи и т.д.
таблица Types - список типов товаров
typeid - код типа
name - название типа

и при вводе нового товара указывать его тип.
Тип товара понятно будет храниться в таблице с товарами
Таблица Articles- список товаров и услуг
articleid - код
name - название товара
typeid - код типа товара

Все параметры, специфичные для данного типа хранить в отдельной табличке
таблица Parameters - список параметров
parameterid - код параметра
name - наименование параметра
typeid - код типа товара, к которому этот параметр принадлежит
typevalue - содержит информацию о типе значения (строка, число,
memo-поле, blob и т.д.). Можно хранить коды типов (например, 1 - строка, 2 -
число и т.д.), можно строковые значения. ("string", "integer" и т.д.)

Ну и все сведения о товаре хранить в наборе таблиц, хранящих каждая свой тип
переменной:
Блок таблиц InfoArticle_X (где Х - значения из поля paarmeters.typevalue,
если там хранится код типа, то лучше и ьаблички называть через цифры, если
строка, то строковые названия, чтобы понятно было, что величину параметра со
значением поля typevalue=1 надо искать в таблице InfoArticle_1 или параметр
со значением поля typevalue="string" надо искать в таблице
InfoArticle_integer).
Структура этого блока таблиц такова:
articleid - код товара
parameterid - код параметра
value - значение параметра

С уважением, Бурляев Вячеслав

Номер выпуска : 5261
Возраст листа : 940 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/539004
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-18 07:35:47 (#539004)

Re: СОМ-сервер вернуть коллекцию.

Здравствуйте, Komkov,

KO> Возвращай, что-нибудь типа:
KO> ICollection = interface
KO> function Count: Integer;
KO> function Item(Index: Integer): IItem; (или даже IUnknown)
KO> end;
Проблем даже больше. Все из-за того, что никак не могу понять СОм и
Интерфейсы с точки зрения реализации.

1. Нужно описать интерфейсы Icollection и IItem, затем реализовать их.
Тут первый затык, что-то не могу врубиться как это сделать. Объекты
автоматизации создал, а нужно-ли это?
2. Как реализовать объекты - тоже ума не приложу. По логике вещей
можно использовать готовые классы TCollection и TCollectionItem.
А как?

Вот самое основное!

   2006-04-18 07:19:11 (#539000)

Re: СОМ-сервер вернуть коллекцию.

Здравствуйте, Komkov,

>> Проблема, не могу придумать как реализовать метод СОМ-сервера,
>>который бы возвращал коллекцию объектов.
>>
KO> Возвращай, что-нибудь типа:
KO> ICollection = interface
KO> function Count: Integer;
KO> function Item(Index: Integer): IItem; (или даже IUnknown)
KO> end;
Это-то понятно, что нужно описать интерфейс коллекции. А вот как
реализовать что-бы именно возвращалось?

В голову приходят следующие шаги:
1. Описать интерфейс IMyCollection
2. В методе возвращения данных создать объект IMyCollection - сформировать данные
3. Присвоить результату указатель на этот объект или Интерфейс?

Прально?

   2006-04-18 06:34:48 (#538989)

Re: СОМ-сервер вернуть коллекцию.

Шистеров Павел пишет:

>Здравствуйте Все,
>
> Проблема, не могу придумать как реализовать метод СОМ-сервера,
>который бы возвращал коллекцию объектов.
>
сорри, поспешил...

Возвращай, что-нибудь типа:
ICollection = interface
function Count: Integer;
function Item(Index: Integer): IItem; (или даже IUnknown)
end;

   2006-04-18 00:43:59 (#538910)

Re: структуры

Здравствуйте, Max.

Вы писали 17 апреля 2006 г., 9:52:42:

> ...............................................
> struct ele
> {
> int i, j, k;
> int si, sj, sk;
> int material;
> }elem[MAX_NODES*2] ;
Здесь ты уже объявляешь elem - массив структур ele, размером (MAX_NODES * 2)

> struct mat{
> int NKxx, NKyy;
> double Kxx[MAX_TABL], Kyy[MAX_TABL];
> double TKxx[MAX_TABL], TKyy[MAX_TABL];
> int NDENS, NC;
> double DENS[MAX_TABL], C[MAX_TABL];
> double TDENS[MAX_TABL], TC[MAX_TABL];
> int NQ;
> double Q[MAX_TABL];
> double TQ[MAX_TABL];
> double U, Te, te;
> }mater[MAX_MATERIALS];
Здесь аналогичная ситуация..

> Подключаю файл prepr.h к prepr.c и объявляю 2 экземпляра структуры:

> ............................
> struct ele elem[MAX_NODES*2];
вообще удивлен что у тебя это компилируется - если все так как ты написал,
то должен быть конфликт имен (если все это объявляется в глобальной области видимости)
если же
struct ele elem[MAX_NODES*2]; - объявляется в стеке, то это объявление перекрывает
объявление сделанное
в заголовочном файле
> struct sid side[MAX_NODES*3];
> ............................

> в которые помещаются данные. Но происходит вот какая непонятная для меня вещь:
> адреса &mater[num].Kxx[0] и &elem[602].material совпадают! т.е. поместив данные
> в elem[602].material я перазапишу mater[num].Kxx[0] и наоборот.
> Кроме того не только у этих двух членов одинаковые адреса, а и у других элементов
> т.к. изменение значения для одного поля одной структуры приводит к изменению
> значения поля уже другой структуры.
Возможно они были по очереди размещены в стеке, и по стечению обстоятельств mater[num].Kxx[0]
оказался размещен
по тому же адресу, где когда-то был размещен elem[602].material. Наверное тебе
стоит разобраться что и где ты объявлял,
и в какой области видимости. Тогда эти чудеса сами исчезнут..

   Yuri Vasiyarov 2006-04-18 00:41:31 (#538908)

Re: структуры

Я вообще-то тоже начинающий сишник и поэтому деброво разбираю
синтаксис. Но имхо у тебя наезжает одно на другое. Особенно, если у
тебя #define MAX_NODES 301, то по-моему крайний элемент elem[601], а
не elem[602]

Номер выпуска : 5256
Возраст листа : 940 (дней)
Количество подписчиков : 544
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/538896
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2006-04-18 00:02:05 (#538896)