:: Visual Foxpro, Foxpro for DOS
Re: генератор guid для ПФР
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
3 сообщениями выше ссылка же и была


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: генератор guid для ПФР
descent52_tmp

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
DECLARE INTEGER CoCreateGuid IN Ole32.dll STRING @lcGUIDStruc
DECLARE INTEGER StringFromGUID2 IN Ole32.dll STRING cGUIDStruc, STRING @cGUID, LONG nSize
cStrucGUID=SPACE(16)
cGUID=SPACE(80)
nSize=40
IF CoCreateGuid(@cStrucGUID) # 0
RETURN ""
ENDIF
IF StringFromGUID2(cStrucGUID,@cGuid,nSize) = 0
RETURN ""
ENDIF
MESSAGEBOX( SUBSTR(STRCONV(LEFT(cGUID,76),6),2,36))

ну а так пойдет? )))
Ratings: 0 negative/0 positive
Re: генератор guid для ПФР
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну если считать нормальным что вместо ошибки (вдруг такое всё же произойдёт) генератор молча возвращает пустую строку - то почему бы и нет В таком варианте "снаружи" следует проверять что таки не EMPTY() возвращается. Или заменить возврат пустоты на ERROR "не шмогла"


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: генератор guid для ПФР
descent52_tmp

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
А вот эти педали подойдут?

MESSAGEBOX(SUBSTR(GUIDGen(36),2,36))

FUNCTION GUIDGen
LPARAMETERS tn_mode as Integer
LOCAL lc_guid_return as String, lc_buffer as String, ln_result as Integer, lc_GUID as String
DECLARE Integer CoCreateGuid IN ole32.dll String@ pguid
lc_GUID = SPACE(16) && 16 Byte = 128 Bit
ln_result = CoCreateGuid(@lc_GUID)
IF tn_mode = 0
lc_guid_return = lc_GUID
ELSE
lc_buffer = SPACE(78)
DECLARE Integer StringFromGUID2 IN ole32.dll String pguid, String @lpszBuffer, Integer cbBuffer
ln_result = StringFromGUID2(lc_GUID,@lc_buffer,LEN(lc_buffer)/2)
lc_guid_return = STRCONV((LEFT(lc_buffer,(ln_result-1)*2)),6)
ENDIF
RETURN lc_guid_return
ENDFUNC

думается, что педалей предостаточно!



Исправлено 1 раз(а). Последнее : descent52_tmp, 26.10.17 16:17
Ratings: 0 negative/0 positive
Re: генератор guid для ПФР
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну так это те же яйца только в профиль. Объединено в 1 функцию возврат "неформатированного" GUID (например если нужно в бинарное поле таблицы его записать как PK, или через какой низкоуровневый АПИ передать), и GUID превращённого в "текстовую строку". Правда этот вариант вообще не заморачивается на проверку "срабатывания" АПИ функций


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: генератор guid для ПФР
lulgu
Автор

Сообщений: 1838
Дата регистрации: 30.11.2016
Igor Korolyov
Это, мягко говоря, спорный способ получения GUID. Ну это как для покраски забора начать врезаться в него на красных автомобилях Сомнительная офисная компонента, заблокированная в одном из обновлений самим MS-ом... При том что для фокса "прямой" способ вызова АПИ функции генерации GUID предельно прост...
answers.microsoft.com

Не поленился пройтись по ссылке.
Ничего про спорный способ, покраску забора, про офисную компоненту там нет.
Обновление Office блокирует код, что не допустить появление вредоносного кода в приложениях MS Office. Им виднее.
CoCreateGuid вещь конечно хорошая, но непонятно, чем этот код может навредить в фокспро:

oGUID = CreateObject("scriptlet.typelib")
cGUID = substr(oGUID.GUID,2,36 )
?cGUID
RELEASE oGUID
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 13 (Гостей: 13)

© 2000-2024 Fox Club 
Яндекс.Метрика