Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А кто-нибудь знает подробности SYS(2007)? / 17 сообщений из 17, страница 1 из 1
07.12.2004, 23:58
    #32817618
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Привет всем!
По какому принципу рассчитывается контрольная сумма в SYS(2007)? В Хелпе такого не нашел. Может, это секрет Мелкософта? Это я к тому, насколько уникальные значения можно получить через SYS(2007)...
...
Рейтинг: 0 / 0
08.12.2004, 06:38
    #32817680
А кто-нибудь знает подробности SYS(2007)?
Код: plaintext
1.
2.
3.
The SYS( 2007 ) function returns the checksum value of the character expression <expC>. The correct syntax is SYS( 2007 ,<expC>). A checksum can be used to test the validity of data or to compare two character expressions. 

NOTE: Checksum is a "byte-oriented CRC-16" algorithm. The exact logic was last published in the February  1986  edition of "Dr. Dobbs Journal." 
...
Рейтинг: 0 / 0
08.12.2004, 09:20
    #32817795
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
CRC-16 на очень маленькой выборке дает одинаковые значения. Точные цифры не скажу, но как-то пробовал на небольшом файле с уникальным символьным полем высчитать SYS(2007) и потом нашел очень много дублей и даже "триблей". Поэтому сейчас использую MD5. Пока дублей не было. Все это голая практика, если кто знает теорию - подскажите.
...
Рейтинг: 0 / 0
08.12.2004, 09:58
    #32817887
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Поделись как ты прикрутил MD5 к фоксу.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
08.12.2004, 12:09
    #32818334
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
To Дмитрий Маликов:
Благодарю за информацию. Теперь буду знать, где смотреть.
To oleg_km:
Согласен с Vladimir M Sklyar - поподробней, если можно...
...
Рейтинг: 0 / 0
09.12.2004, 09:25
    #32819900
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
См. приложение
...
Рейтинг: 0 / 0
10.12.2004, 14:12
    #32823255
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
To oleg_km:
Скачал. Спасибо. Интересно.
...
Рейтинг: 0 / 0
16.12.2004, 03:31
    #32829450
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Hi neznajka!

Ну уже по определению SYS(2007) (без дополнительных параметров добавленыых в
VFP8) может выдать лишь 65535 разных значений - чего-же от него ожидать то
:) Конечно будут повторения - достаточно задать > 65535 разных комбинаций,
чтобы 100% получить повторение :) реально повторения начнутся гораздо
раньше - но я уже подзабыл эту математику, потому не скажу более точно...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
16.12.2004, 17:02
    #32830878
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
To Igor Korolyov:
Да я и сам это понимаю - формулы перестановок и сочетаний еще слегка помню. Из этих же формул, кстати, следует и неизбежная повторяемость MD5-кодирования, правда - "петля" повторений очень большая...
...
Рейтинг: 0 / 0
17.12.2004, 02:39
    #32831379
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Hi neznajka!

Ну да - таковы ВСЕ хэш-алгоритмы - просто число возможных выходных значений,
а также собственно то как "перемешиваются" исходные данные влияет на
вероятность повторения.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
17.12.2004, 15:36
    #32832655
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
To Igor Korolyov:
Да меня-то эта тема больше из любопытства занимала - познакомиться с теорией, чтобы "уразуметь": можно ли организовать MD5-алгоритм средствами VFP? Но, благодаря oleg_km, пришел к выводу, что и делать-то это, по сути, НЕзачем - ведь все прекрасно подшивается под Fox, без особого напряга. Теперь у меня на повестке дня другая проблема - реорганизация структур нескольких БД в целях более рационального (компактного) размещения строчных полей, содержащих данные, длина которых колеблется в значительных пределах - от 12 до 149 символов (например, названия фирм). Не все, оказывается, можно решать через memo, особенно при необходимости вести индексный поиск по такому полю. Но это - выходит за рамки данной темы. А начинать новую - пока не стОит, сначала посоображаю немного сам.
...
Рейтинг: 0 / 0
17.12.2004, 18:29
    #32832996
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Пример организации словаря для поиска по отдельным словам здесь
Вполе работоспособная модель в том числе для memo-полей
...
Рейтинг: 0 / 0
18.12.2004, 23:53
    #32833577
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Hi neznajka!

Я не знаю чего тебе oleg_km прислал (через NNTP только ссылка видна, потому
я не закачал) - что-то меня смущает цифра в 29 Кб - чего он туда напихал
непонятно :)
Вообще-то MD5 получается средствами винды в пару десятков строк кода, даже
со всякими излишними проверками :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
? GetMd5Hash("Привет!")

FUNCTION GetMd5Hash
LPARAMETERS tcInput
#DEFINE dnPROV_RSA_FULL  1 
#DEFINE dnCALG_MD5      0x8003
#DEFINE dnHP_HASHVAL    0x0002
DECLARE INTEGER CryptAcquireContext IN WIN32API INTEGER @, STRING, STRING, 
INTEGER, INTEGER
DECLARE INTEGER CryptCreateHash IN WIN32API INTEGER, INTEGER, INTEGER, 
INTEGER, INTEGER @
DECLARE INTEGER CryptHashData IN WIN32API INTEGER, STRING, INTEGER, INTEGER
DECLARE INTEGER CryptGetHashParam IN WIN32API INTEGER, INTEGER, STRING @, 
INTEGER @, INTEGER
DECLARE INTEGER CryptDestroyHash IN WIN32API INTEGER
DECLARE INTEGER CryptReleaseContext IN WIN32API INTEGER, INTEGER
LOCAL lnProviderHandle, lnHashHandle, lcHash, lnHashLen
lnProviderHandle =  0 
lnHashHandle =  0 
lcHash = SPACE( 16 )
lnHashLen =  16 
IF CryptAcquireContext(@m.lnProviderHandle, "", "", dnPROV_RSA_FULL, 
0xF0000000) =  0 
 ERROR "Ошибка получения CryptoAPI контекста"
 RETURN ""
ENDIF
IF CryptCreateHash(m.lnProviderHandle, dnCALG_MD5,  0 ,  0 , @m.lnHashHandle) = 
 0 
 ERROR "Ошибка создания хендла хеша"
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
IF CryptHashData(m.lnHashHandle, m.tcInput, LEN(m.tcInput),  0 ) =  0 
 ERROR "Ошибка хеширования"
 CryptDestroyHash(m.lnHashHandle)
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
IF CryptGetHashParam(m.lnHashHandle, dnHP_HASHVAL, @m.lcHash, @m.lnHashLen, 
 0 ) =  0 
 ERROR "Ошибка получения хеша"
 CryptDestroyHash(m.lnHashHandle)
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
CryptDestroyHash(m.lnHashHandle)
CryptReleaseContext(m.lnProviderHandle,  0 )
RETURN LOWER(STRCONV(m.lcHash,  15 ))
ENDFUNC

Теперь у меня на повестке дня другая проблема - реорганизация структур
нескольких БД в целях более рационального (компактного) размещения строчных
полей
А какая цель? Чтоб места меньша занимало? (сколько ж у тебя записей то?) Или
чтобы быстрее работало? В принципе если тебя уже достают такие проблемы, то
наверное пора переходить на какой-нить SQL сервер - ибо в фоксе нереально
сделать красивую и быструю эмуляцию VARCHAR полей...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
19.12.2004, 14:19
    #32833745
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Ровно это и запихал. Просто была чья-та dll ну и она естественно меньше 29kb быть не может.
...
Рейтинг: 0 / 0
19.12.2004, 21:36
    #32833908
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Hi oleg_km!

Фоксовая dll с таким кодом? А чего тогда не исходник кинул?

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
20.12.2004, 12:41
    #32834575
oleg_km
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Да какая фоксовая. На сях, наверное. Это не моя, скачал где-то. Моя внутри моей dll, но она большая, лень выдирать
...
Рейтинг: 0 / 0
20.12.2004, 15:33
    #32835178
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А кто-нибудь знает подробности SYS(2007)?
Спасибо всем за участие. Не ожидал, честно говоря. Кодировка в системе MD5 мне очень пригодилась. Но не для данного случая. По уточненным условиям – здесь необходимо было:
- организовать компактное хранение строчных данных, имеющих значительный разброс длины;
- вести по ним ИНДЕКСНЫЙ поиск:
- также вести поиск по шаблону с применением % и _ ;
- и еще масса дополнительных условий…
Короче, для решения данной проблемы оказалось недостаточно возможностей организации хранения данных в виде плоских таблиц. Пришлось (для данного случая) отказаться от DBF-формата и вообще использовать Adaptive Server Anywhere от SYBASE. Но – это, действительно, частный случай, который я не хочу здесь описывать, поскольку являюсь ярым приверженцем FOX’а.
И ссылка от karly™ (http://www.foxclub.ru/sol/index.php?act=view&id=443) действительно оказалась полезной. Большое спасибо. Прошу считать тему закрытой. Если, конечно, ни у кого нет личного интереса в продолжении.
Удачи!
С уважением,
Третьяченко Николай, aka Neznajka.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А кто-нибудь знает подробности SYS(2007)? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]