Переключение на Главную Страницу Страницы: 1 ... 16 17 [18] 19 20 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 459186 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #255 - 11. Июля 2008 :: 16:05
Печать  
[quote author=orefkov link=1214205575/240#251 date=1215774343]Обсуждаем дальше.[/quote]

1. Я все же за то, чтобы оставить QueryInterface, как альтернативу dynamic_cast.
Ну, здесь, как ты говоришь, "не нужно - не используй", а накладные расходы пренебрежимо малы.

2. Как я понимаю результат любой операции: это тип и код ошибки.
Поскольку речь идет о межмодульном взаимодействии, не исключено, что мне будут неизвестны все возможные коды ошибок.
Но я должен иметь возможность отличить ситуации:

- отсутствия ошибки (не ошибка)
обработка источником: нормальное продолжение

- добровольного отказа от продолжения (не ошибка)
обработка источником: завершение обработки

- аварийного отказа от продолжения (ошибка).
обработка источником: аварийное завершение (исключение)

В этом плане HRESULT подходит как нельзя лучше: есть общедоступные варианты ошибок, вменяемый S_OK, S_FAIL, к примеру - это будет добровольный отказ.
Можно расширять при необходимости.

Вообще, я бы не искал лучшего, по мне IUnknown и HRESULT - вполне удачны.

3. CValue const * const * - это +1.
Я сам не решился здесь такое написать, чтобы не испугать телезрителей. ;)

4. nextValues(CValue const* const* &ppVals)
В какой момент память ppVals будет освобождаться?

Варианта 2 (мне известных) - либо память выделяет инициатор, либо надо добавить в интерфейс что-то типа done().

5. dataInfo()
Названия, конечно, для интерфейсов, построенных на виртуальных функциях - не так важны.
Но вообще - то, это тоже init() по-сути, ибо осуществляет сброс начальной позиции выборки.

6. Несмотря на п.5 хотелось бы все же, чтобы названия у тебя и у меня были одни и те же.
В этом плане меня смущают, конечно, и AddRef() и Release() (слишком используемы), а функциям-членам я бы все-таки дал какой-то префикс, дабы вероятность коллизий была меньше.

7. Не понял пока прелести выноса GetLastError() в отдельный интерфейс.
Что мы тут выиграем?

8. CString не нравится.
Все реализации, которые у меня встречаются позволяют вернуть без напряга LPCSTR.
Также возможно использование NULL как индикатор отсутствия наименования.

9. CType& - ты уверен, что CType* и NULL для нетипизированных - не будет удобнее?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #256 - 12. Июля 2008 :: 06:47
Печать  
HRESULT - имхо отрыжка COMа.
Мы же пишем в С++, и enum'ы позволят объявить самоописывающийся интерфейс, что бы как раз не было
"Поскольку речь идет о межмодульном взаимодействии, не исключено, что мне будут неизвестны все возможные коды ошибок". Базовые общеупотребительные ошибки объявляются в IInterface, спецефические для интерфейса - в интерфейсе. Правда, очень жаль, что в С++ нельзя отнаследовать enum от enum'а.

GetLastError - ну либо надо ее надо тогда делать в самом базовом интерфейсе, либо отдельным интерфейсом, иначе она будет плодится в каждом интерфейсе. Возвращать LPCSTR имхо моветон. Либо я должен рассчитывать, что вызывающая сторона сразу скопирует строку куданить к себе, либо как-то обеспечивать "живость" этого указателя, причем не имея никакой инфы, а до каких пор этот указатель должен оставаться живым.

const CType& vs const CType* - имхо дело вкуса. Однако стоит заметить, что нетипизированных значений в 1С не бывает, ведь CValue отнаследована от CType. Хотя может быть, ты и прав - это позволит отличить "значения, принимающие тип 0" от "значения, тип которых оставлять как есть".


nextValues(CValue const* const* &ppVals)
Память должна выделятся источником. Освобождаться по done.
Я бы даже наверное переделал так:
Код
Выбрать все
virtual errCodes init(DWORD& cols, DWORD& rows, CValue const* const* &ppVals) = 0;
virtual errCodes nextValues() = 0;
virtual void done() = 0;
 


  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #257 - 12. Июля 2008 :: 06:51
Печать  
Вобщем, думайте до 01.08.2008, а я в отпуск Улыбка
Поеду пробовать настоящего немецкого пива.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #258 - 12. Июля 2008 :: 09:03
Печать  
ОК.
GetLastError - я просто не был уверен, что одного GetLastError на все интерфейсы хватит (т.е. что GetLastError не должен плодиться).
Но, возможно, это действительно так.

LPCSTR - это не так уж и плохо.
Указатель действителен до любого следующего вызова данного интерфейса (или любого интерфейса объекта для единого GetLastError).
std::string::c_cstr() работает также, а у 1C также работает CValue::Format().

+Да что там - наш интерфейс также гарантирует время жизни указателей и значений, переданных в addValues, только на время выполнения метода.

Зато если я использую у себя в инициаторе не CString, а std::string (к примеру), мне не надо создавать CString, заполнять ее и после этого еще раз копировать в std::string.

orefkov писал(а) 12. Июля 2008 :: 06:51:
Вобщем, думайте до 01.08.2008, а я в отпуск Улыбка
Поеду пробовать настоящего немецкого пива.

Ну, классных те удовольствий колбасных Улыбка
« Последняя редакция: 12. Июля 2008 :: 11:00 - kms »  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #259 - 15. Июля 2008 :: 04:48
Печать  
Михаил, ну что, какой вариант выбираем?

Я пока что предлагаю добавить хотя бы ldrDone, без него, например, не сделаешь нормальную выгрузку в таблицу значений / список значений на форме, т.к. негде вернуть флаг Refresh и обновить элемент после загрузки данных.

Интерфейс источника будем реализовывать в icpp или Сашу подождем?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #260 - 15. Июля 2008 :: 06:01
Печать  
ints по функционалу 1sqlite
  

1sqlite.rar ( 0 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #261 - 15. Июля 2008 :: 08:21
Печать  
artbear писал(а) 15. Июля 2008 :: 04:48:
Я пока что предлагаю добавить хотя бы ldrDone, без него, например, не сделаешь нормальную выгрузку в таблицу значений / список значений на форме, т.к. негде вернуть флаг Refresh и обновить элемент после загрузки данных.

Интерфейс источника будем реализовывать в icpp или Сашу подождем?

Артур, я обдумываю эту тему.
Давай пока возьмем небольшой таймаут.

А.
Зачем, говоришь нужен Done в интерфейсе выгрузки?
Может быть, перенести обсуждение в отдельную ветку?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #262 - 15. Июля 2008 :: 08:41
Печать  
Завел новую тему об универсальных интерфейсах загрузки/выгрузки
http://www.1cpp.ru/forum/YaBB.pl?num=1216110955/0#0
Прошу обсуждать их там, а не в этой ветке.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #263 - 18. Июля 2008 :: 05:27
Печать  
Видели последние посты hogik-a на инфостарте (особенно самый последний)? Неужели всё так плохо?  Печаль
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #264 - 18. Июля 2008 :: 07:02
Печать  
JohnyDeath писал(а) 18. Июля 2008 :: 05:27:
Видели последние посты hogik-a на инфостарте (особенно самый последний)? Неужели всё так плохо?  Печаль


Исходники sqlLite в открытом доступе. Т.е. в принципе даже если ошибка имеет место -
всегда все можно исправить. Кстати hogik не догоняет как sqlLite делает запросы
- весьма позабавило Улыбка
- между тем автор sqlLite откровенно не заморачивался обработкой запросов -
алгоритм Join у него занимает строк 20 Улыбка
Думаю, что просто основные клиенты не интересуются ни обновлением данных, ни соединением Больших таблиц.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #265 - 18. Июля 2008 :: 07:28
Печать  
Мы тут с Александром ака Chieftain попытались сэмулировать вылет. У нас не получилось!  Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #266 - 18. Июля 2008 :: 07:34
Печать  
JohnyDeath писал(а) 18. Июля 2008 :: 07:28:
Мы тут с Александром ака Chieftain попытались сэмулировать вылет. У нас не получилось!  Улыбка



В прошлом году тестировал sqlLite. На тестовой было все ОК.
Решил попробовать в многопользовательском режиме на рабочей базе.
База навернулась.
Грешил на конфликт foxpro и sqllite.
Пост если очень нужно - могу разыскать - но ветки уж очень длинные...
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #267 - 18. Июля 2008 :: 07:46
Печать  
kiruha писал(а) 18. Июля 2008 :: 07:34:
JohnyDeath писал(а) 18. Июля 2008 :: 07:28:
Мы тут с Александром ака Chieftain попытались сэмулировать вылет. У нас не получилось!  Улыбка



В прошлом году тестировал sqlLite. На тестовой было все ОК.
Решил попробовать в многопользовательском режиме на рабочей базе.
База навернулась.
Грешил на конфликт foxpro и sqllite.
Пост если очень нужно - могу разыскать - но ветки уж очень длинные...

Хм... Ну у меня в одной из рабочих баз уже крутится, правда там не особо много используется.
Запросы к справочнику истории наценок по группам товаров для расчета цен, запросы к документам - определение параметров ценовых соглашений по контрагентам.
Пока что косяков не обнаружил, но в базе активных зверей только 5-6 человек
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #268 - 18. Июля 2008 :: 07:57
Печать  
Chieftain писал(а) 18. Июля 2008 :: 07:46:
kiruha писал(а) 18. Июля 2008 :: 07:34:
JohnyDeath писал(а) 18. Июля 2008 :: 07:28:
Мы тут с Александром ака Chieftain попытались сэмулировать вылет. У нас не получилось!  Улыбка



В прошлом году тестировал sqlLite. На тестовой было все ОК.
Решил попробовать в многопользовательском режиме на рабочей базе.
База навернулась.
Грешил на конфликт foxpro и sqllite.
Пост если очень нужно - могу разыскать - но ветки уж очень длинные...

Хм... Ну у меня в одной из рабочих баз уже крутится, правда там не особо много используется.
Запросы к справочнику истории наценок по группам товаров для расчета цен, запросы к документам - определение параметров ценовых соглашений по контрагентам.
Пока что косяков не обнаружил, но в базе активных зверей только 5-6 человек


Думаю, что очень сложно Цитата:
Т.е. я брал запрос из http://infostart.ru/blogs/482/. А в другой сессии выполнял чтение, обновление, добавление, удаление записей.

попасть и в запрос и в обновление на небольших объемах.
Естественно, все это требует более тщательной проверки - а Саша в отпуске Печаль
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #269 - 18. Июля 2008 :: 08:02
Печать  
kiruha писал(а) 18. Июля 2008 :: 07:57:
Естественно, все это требует более тщательной проверки - а Саша в отпуске Печаль

Естественно остается только ждать его.
Я попробовал воспроизвести падение в тесте - не получилось, хотя вероятность одновременного выполнения была ооочень высокой, по моему мнению.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 16 17 [18] 19 20 ... 79
ОтправитьПечать