Автор | Сообщение |
|
| постоянный участник
|
Пост N: 253
Зарегистрирован: 27.07.08
|
|
Отправлено: 16.03.21 21:55. Заголовок: Облачные сервисы (WebDAV, CalDAV &Co)
После некоторого разбирательства с прогой удалось организовать импорт из ICAL-файлов и экспорт в оные. Но тут шеф захотел, чтобы был прямой контакт с CalDav через интернет. Я знаю, что на питоне такое возможно. На дельфине и даже Xojo (RealBasic) тоже - через спецбиблиотеку. Но как реализовать подключение к облачному сервису в Harbour/Minigui? Возможно ли это вообще?
|
|
|
Ответов - 174
, стр:
1
2
3
4
5
6
7
8
9
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 276
Зарегистрирован: 27.07.08
|
|
Отправлено: 27.03.21 10:57. Заголовок: Петр пишет: TimeSta..
Петр пишет: цитата: | TimeStamp в harbour поддерживает ISO 8601 и совместим с большинством реализаций. Операции с TimeStamp быстрее строковых операций. Но вольному воля.. |
| TimeStamp - это хорошо, но в формате DBF, созданном в мохнатом 1983 году нет поддержки таких полей. Тогда было только отдельное поле типа даты и строковое короткое поле для времени. Можно создать переменную типа DateTime, а в базу данных её как сохранить? Это тебе не Oracle (ещё одна "любимая" программа моего шефа), где можно пользовательские типы лепить.
|
|
|
|
| постоянный участник
|
Пост N: 1636
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 14:18. Заголовок: SergKis пишет: стро..
SergKis пишет: цитата: | строковые решения будут проще |
| Возможно для кого-то и проще. Но и сложного там ничего нет Скрытый текст
цитата: | REQUEST HB_LANG_RU REQUEST HB_CODEPAGE_RU1251 REQUEST HB_CODEPAGE_RU866 REQUEST DBFCDX PROCEDURE Main() LOCAL tBottomDate, tTopDate USE events NEW INDEX ON hb_TSToStr(_FIELD->DUE) TO Due tTopDate := hb_DateTime(2021, 5, 1) tBottomDate := hb_DateTime(2021, 6, 15) SET SCOPETOP TO hb_TSToStr(tTopDate) SET SCOPEBOTTOM TO hb_TSToStr(tBottomDate) GO TOP DO WHILE .NOT. EOF() ? FIELD->UID, FIELD->DUE SKIP +1 ENDDO RETURN INIT PROCEDURE OnInit() LOCAL aStru LOCAL cFileDbf := hb_DirBase() + "events.dbf" LOCAL nI hb_cdpSelect( "RU1251" ) hb_langSelect("RU") hb_setTermCP( "RU866", "RU1251" ) rddSetDefault("DBFCDX") SET DATE FORMAT TO "DD.MM.YYYY" IF .NOT. DbExists(cFileDbf) aStru := {} AADD( aStru, {"UID", "C", 36, 0} ) AADD( aStru, {"DUE", "@", 8, 0} ) DbCreate(cFileDbf, aStru, "DBFCDX", .t., "EVENTS", , "RU1251" ) FOR nI := 1 TO 1000 dbAppend() FIELD->UID := "5981ddad-f421-47ea-bd2d-f442865b" + STRZERO(nI, 4) FIELD->DUE := hb_StrToTS(hb_strFormat("%04d-%02d-%02d", YEAR(DATE()), hb_RandomInt(1,12), hb_RandomInt(1,28))) NEXT nI dbCloseAll() ENDIF RETURN |
|
|
|
|
|
|
| постоянный участник
|
Пост N: 3650
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 17:26. Заголовок: Петр пишет Но и слож..
Петр пишет цитата: | Но и сложного там ничего нет |
| Что то не срослось ваш demo.prg чуть модифицированный под hmg сборку Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST HB_LANG_RU REQUEST HB_CODEPAGE_RU1251 REQUEST HB_CODEPAGE_RU866 REQUEST DBFCDX PROCEDURE Main() LOCAL tBottomDate, tTopDate hb_cdpSelect( "RU1251" ) hb_langSelect("RU") hb_setTermCP( "RU866", "RU1251" ) Sets() USE events NEW INDEX ON hb_TSToStr(_FIELD->DUE) TO Due tTopDate := hb_DateTime(2021, 5, 1) tBottomDate := hb_DateTime(2021, 6, 15) SET SCOPETOP TO hb_TSToStr(tTopDate) SET SCOPEBOTTOM TO hb_TSToStr(tBottomDate) ? "Scope =",tTopDate, tBottomDate, OrdKeyCount() GO TOP DO WHILE .NOT. EOF() ? RecNo(), FIELD->UID, FIELD->DUE SKIP 1 ENDDO RETURN FUNC Sets() LOCAL aStru LOCAL cFileDbf := hb_DirBase() + "events.dbf" LOCAL nI rddSetDefault("DBFCDX") SET DATE FORMAT TO "DD.MM.YYYY" IF .NOT. DbExists(cFileDbf) aStru := {} AADD( aStru, {"UID", "C", 36, 0} ) AADD( aStru, {"DUE", "@", 8, 0} ) AADD( aStru, {"DTM", "=", 8, 0} ) DbCreate(cFileDbf, aStru, "DBFCDX", .t., "EVENTS", , "RU1251" ) FOR nI := 1 TO 100 dbAppend() FIELD->UID := "5981ddad-f421-47ea-bd2d-f442865b" + STRZERO(nI, 4) FIELD->DUE := hb_StrToTS(hb_strFormat("%04d-%02d-%02d", YEAR(DATE()), hb_RandomInt(1,12), hb_RandomInt(1,28))) NEXT nI GO TOP ? cFileDbf, "LastRec =", LastRec() DO WHILE !EOF() ? RecNo(), FIELD->UID, FIELD->DUE, FIELD->DTM SKIP ENDDO ? dbCloseAll() ENDIF RETURN Nil
| Результат работы в _MsgLog.txt Скрытый текст
C:\MiniGuiBcc58\SAMPLES\_Test\_hb_datetime\events.dbf LastRec = 100 1 '' 00:00 2021-03-27 16:17:16.458 2 '' 00:00 2021-03-27 16:17:16.458 3 '' 00:00 2021-03-27 16:17:16.458 4 '' 00:00 2021-03-27 16:17:16.458 5 '' 00:00 2021-03-27 16:17:16.458 6 '' 00:00 2021-03-27 16:17:16.458 7 '' 00:00 2021-03-27 16:17:16.458 8 '' 00:00 2021-03-27 16:17:16.458 9 '' 00:00 2021-03-27 16:17:16.458 10 '' 00:00 2021-03-27 16:17:16.458 11 '' 00:00 2021-03-27 16:17:16.458 12 '' 00:00 2021-03-27 16:17:16.458 13 '' 00:00 2021-03-27 16:17:16.458 14 '' 00:00 2021-03-27 16:17:16.458 15 '' 00:00 2021-03-27 16:17:16.458 16 '' 00:00 2021-03-27 16:17:16.458 17 '' 00:00 2021-03-27 16:17:16.458 18 '' 00:00 2021-03-27 16:17:16.458 19 '' 00:00 2021-03-27 16:17:16.458 20 '' 00:00 2021-03-27 16:17:16.458 21 '' 00:00 2021-03-27 16:17:16.458 ... 90 '' 00:00 2021-03-27 16:17:16.458 91 '' 00:00 2021-03-27 16:17:16.458 92 '' 00:00 2021-03-27 16:17:16.458 93 '' 00:00 2021-03-27 16:17:16.458 94 '' 00:00 2021-03-27 16:17:16.458 95 '' 00:00 2021-03-27 16:17:16.458 96 '' 00:00 2021-03-27 16:17:16.458 97 '' 00:00 2021-03-27 16:17:16.458 98 '' 00:00 2021-03-27 16:17:16.458 99 '' 00:00 2021-03-27 16:17:16.458 100 '' 00:00 2021-03-27 16:17:16.459 Scope = 2021-05-01 2021-06-15 0
|
|
|
|
|
| постоянный участник
|
Пост N: 3651
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 17:35. Заголовок: Dr. Oldwarez пишет М..
|
|
|
|
| постоянный участник
|
Пост N: 1637
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 17:58. Заголовок: SergKis пишет: Что ..
SergKis пишет: цитата: | Что то не срослось ваш demo.prg |
| Мне не удалось повторить в консольном приложении ваш удивительный результат. И не удалось откомпилировать "модифицированный под hmg сборку"
|
|
|
|
| постоянный участник
|
Пост N: 3652
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 18:03. Заголовок: Петр пишет И не удал..
Петр пишет цитата: | И не удалось откомпилировать "модифицированный под hmg сборку" |
| demo.hbp # Keys compile #-prgflag=-w2 -es1 # Enable multi/single-thread Harbour VM -mt # Incremental-compilation mode -inc # folder where are all * .obj -workdir=OBJ # Name EXE-module -odemo # to list all * .prg demo.prg # project Resources #demo.rc # paths to the main and extension *.Lib -lminigui Compile.bat ..\..\..\BATCH\hbmk2.bat demo.hbp
|
|
|
|
| постоянный участник
|
Пост N: 3653
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 18:07. Заголовок: PS C:\MiniGuiBcc..
PS C:\MiniGuiBcc58\BATCH\minigui.cfg # Basic configuration for Compile.bat MG_CMP=harbour MG_BCC=c:\borland\bcc58 MG_ROOT=c:\miniguiBcc58
|
|
|
|
| постоянный участник
|
Пост N: 1638
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 18:34. Заголовок: Петр пишет: И не уд..
Петр пишет: цитата: | И не удалось откомпилировать "модифицированный под hmg сборку" |
| call ..\..\..\batch\compile.bat demo /c %1 %2 %3 %4 %5 %6 %7 %8 %9 Забыл /c удалить. Удалось Прикольно.. Закомментировал //#include "hmg.ch" Добавил /c И результат ожидаемый. Я честно не знаю, что там в minigui сломалось. В топку?!
|
|
|
|
| постоянный участник
|
Пост N: 1639
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 18:47. Заголовок: Замените FIELD по те..
Замените FIELD по тексту на _FIELD Из топки или подождать?
|
|
|
|
| постоянный участник
|
Пост N: 3654
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 18:52. Заголовок: Петр пишет Я честно ..
Петр пишет цитата: | Я честно не знаю, что там в minigui сломалось. В топку?! |
| К сожалению, в топке и уже давно консольные и wvt приложения Вот я и говорю, что со строковыми проще USE ... INDEX ON _FIELD->UID+_FILED->DATASTART TAG START INDEX ON _FIELD->UID+_FILED->DATAEND TAG END INDEX ON _FIELD->UIDNO TAG ID Запрос в GETBOX-ах cUID := ... dDT1 := ... dDT2 := ... SET SCOPE TO cUID+DtoS(dDT1), cUID+DtoS(dDt2) GO TOP
|
|
|
|
| постоянный участник
|
Пост N: 3655
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 19:00. Заголовок: Петр пишет Замените ..
Петр пишет цитата: | Замените FIELD по тексту на _FIELD |
| Хотел из совсем убрать, причем сразу, но не сделал ... и да, сработало, но осталось не заполнено время в DUE ...
|
|
|
|
|
| постоянный участник
|
Пост N: 3656
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 19:11. Заголовок: PS Показ в колонках ..
PS Показ в колонках решается через oCol:cPicture := "@R 9999-99-99 99:99:99"
|
|
|
|
| постоянный участник
|
Пост N: 1640
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 20:03. Заголовок: Петр пишет: Заменит..
Петр пишет: цитата: | Замените FIELD по тексту на _FIELD |
| Да, некрасиво получается FIELD->UID := "5981ddad-f421-47ea-bd2d-f442865b" + STRZERO(nI, 4) => _HMG_SYSDATA[404] := '->UID := "5981ddad-f421-47ea-bd2d-f442865b" + STRZERO(nI, 4)'
|
|
|
|
| постоянный участник
|
Пост N: 1641
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 20:18. Заголовок: Что-то мы отвлеклись..
Что-то мы отвлеклись от темы. 6. Значит что у нас осталось: FOR vs. FOR EACH, никогда не используйте File() для проверки доступности файла - короче мелочи. 7. Давайте вернемся к hb_Run().. 8. Научиться работать с xml пошло бы на пользу общему делу. 9. Не скажу. 10. Переход на libcurl - нужен или нет.
|
|
|
|
| постоянный участник
|
Пост N: 277
Зарегистрирован: 27.07.08
|
|
Отправлено: 27.03.21 20:28. Заголовок: Петр пишет: Переход..
Петр пишет: цитата: | Переход на libcurl - нужен или нет. |
| Нужен, но потом. Сейчас вот вопрос какой: curl -k --user USERNAME:PASSWORD -X PUT -H "Content-Type: text/calendar; charset=utf-8" -d "$a" "https://owncloud.jujens.eu/remote.php/caldav/calendars/jujens/omis/<mon-fichier.ics>" Обязательно надо, чтобы каждому событию создавали свой ics? Или можно все события в один ICS загнать?
|
|
|
|
| постоянный участник
|
Пост N: 1642
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.03.21 20:57. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Или можно все события в один ICS загнать |
| Если все события принадлежат одному календарю - можно и даже нужно. P.S. Оказывается не все сервера поддерживают такую ситуацию.
|
|
|
|
| постоянный участник
|
Пост N: 3657
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 21:10. Заголовок: Dr. Oldwarez пишетИл..
Dr. Oldwarez пишет цитата: | Или можно все события в один ICS загнать? |
| Вы можете все календари со всеми событиями загнать в одну базу и меть на поле календарь уникальный TAG, сделав SET ORDER на этот TAG, получите список календарей в тсб, выбрав, переключаете на др. TAG (<календарь>+<события>) и ставите scope на календарь, получите список событий календаря и т.д. Не ясно, что за календари с каким объемом данных на какой период отчетности, бесконечен во времени или сворачивается в архив. На эти вопросы себе ответьте в первую очередь
|
|
|
|
| постоянный участник
|
Пост N: 278
Зарегистрирован: 27.07.08
|
|
Отправлено: 27.03.21 22:22. Заголовок: SergKis пишет: Вы м..
SergKis пишет: цитата: | Вы можете все календари со всеми событиями загнать в одну базу и меть на поле календарь уникальный TAG, сделав SET ORDER на этот TAG, получите список календарей в тсб, выбрав, переключаете на др. TAG (<календарь>+<события>) и ставите scope на календарь, получите список событий календаря и т.д. Не ясно, что за календари с каким объемом данных на какой период отчетности, бесконечен во времени или сворачивается в архив. На эти вопросы себе ответьте в первую очередь |
| Очень простые календари вида BEGIN:VEVENT UID:20210401T073000Z-QWERTY-04357@abcdefg.com DTSTART:20210401T073000Z DTEND:20210401T161500Z SUMMARY:Visit to doctor DESCRIPTION:Vaccination against COVID-19, plague, cholera and Ebola LOCATION:Central hospital END:VEVENT
|
|
|
|
| постоянный участник
|
Пост N: 3658
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 22:40. Заголовок: Dr. Oldwarez пишет О..
Dr. Oldwarez пишет цитата: | Очень простые календари вида |
| Это событие календаря, 1 запись в базе (вроде, был еще параметр выполнение события дата-время, или ошибаюсь) календарей у вас 6 штук. Это личные календари событий или предприятия\организации. Объем календаря (в событиях-записях). И чего вы от них хотите ? Просто показ в табл. виде отчетов ? Цель ?
|
|
|
|
| постоянный участник
|
Пост N: 3659
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.03.21 22:49. Заголовок: PS Технические момен..
PS Технические моменты вы прошли, попробовали, на вас вывалили инф. Как бы дальше сами, создайте dbf[ы] и пробуйте, щупайте.
|
|
|
Ответов - 174
, стр:
1
2
3
4
5
6
7
8
9
All
[только новые]
|
|