Да... эта функция сравнивает только РЕАЛЬНО одинаковые значения.... но зачем тебе оно ..используй АПИ ПримеР DECLARE FUNCTION CompareString LIB _ "KERNEL32.DLL" ALIAS "CompareStringA" _ ( _ BYVAL Locale AS LONG, _ BYVAL dwCmpFlags AS DWORD, _ lpString1 AS ASCIIZ, _ BYVAL cchCount1 AS LONG, _ lpString2 AS ASCIIZ, _ BYVAL cchCount2 AS LONG _ ) AS LONG Вот если ты ненайдёшь какие канстанты нужны то вот .... Это тебе для первого значения... %LOCALE_USER_DEFAULT = &H0000 %LOCALE_SYSTEM_DEFAULT = &H0800& Это тебе для флагов %NORM_IGNORECASE = &H00000001 %NORM_IGNORENONSPACE = &H00000002 %NORM_IGNORESYMBOLS = &H00000004 %NORM_IGNOREKANATYPE = &H00010000 %NORM_IGNOREWIDTH = &H00020000 .... в твоём случаи тебе надо первый использовать.... далее если всё удачно то функция возвратит следующие.... %CSTR_LESS_THAN = 1 %CSTR_EQUAL = 2 %CSTR_GREATER_THAN = 3 опять же если строки ровны то она возвратит 2.... "%CSTR_EQUAL".... ну вот и всё.... так что .... хм.. им необязательно было делать эту функцию... так как 1) Можно сделать её самому... 2) Надо использовать АПИ... тыж програмируешь под виндовс... так вот разработчики тоже не дураки и заново изобретать велосипед незачем.... П.С. Со аргументами функции я думаю понятно .... если нет ... хм то пиши... После этого ты можешь подумать "нафига такой изврат , в ВБ всё проще...." АПИ это тоже не сложно ... вот тебе ещё пример .... DECLARE FUNCTION lstrcmpi LIB _ "KERNEL32.DLL" ALIAS "lstrcmpiA" _ ( _ lpString1 AS ASCIIZ, _ lpString2 AS ASCIIZ _ ) AS LONG Эта функция сравнивает две строки независимо от РЕГИСТРА возвратит 0 если ..... строки ровны.... отрицательное значение если вторая строка больше 1... и положительное если наоборот .... так что выходов у тебя много .... а какой ты выбиришь уж твоя забота...
Ответить
|