Страница 1 из 1
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 12:33
RaFaeL
Год назад уже задавал этот вопрос
http://forum.clarionlife.net/phpbb/view ... 005#p23005 но руки не дошли попробовать, сейчас понадобилось, но ничего не получается, всегда выдает ошибку -5 на недостаточный размер буфера. Перепробовал различные комбинации, но видимо чего-то не хватает или не так делаю. В аттаче проект (6.3 но думаю везде откроется), библиотека подключена
Описание функции
http://www.delphikingdom.com/asp/viewit ... 4981164050
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 17:17
Admin
Там все что то мутно. Забыл уже как с дельфями PСhar пересылать...
Вот так частично получилось. Отчество не возвращает. Может в группе все таки что то не то.
Код: Выделить всё
program
PartsFIO GROUP,TYPE
pLastName LONG
pFirstName LONG
pMiddleName LONG
nLastName LONG
nFirstName LONG
nMiddleName LONG
pLastName_ CSTRING(101)
pFirstName_ CSTRING(101)
pMiddleName_ CSTRING(101)
END
map
MODULE('Padeg.dll')
PadegGetSex(*CSTRING),LONG,C,RAW,NAME('GetSex')
PadegGetFIOParts(*CSTRING,*PartsFIO),LONG,PASCAL,RAW,NAME('GetFIOParts')
END
end
FIO CSTRING(256)
Part GROUP(PartsFIO)
END
code
FIO='Пупкин Василий Иванович'
Part.nLastName = 100
Part.nFirstName = 100
Part.nMiddleName = 100
Part.pLastName_ = ALL('<0>',100)
Part.pFirstName_ = ALL('<0>',100)
Part.pMiddleName_ = ALL('<0>',100)
Part.pLastName=ADDRESS(Part.pLastName_)
Part.pFirstName=ADDRESS(Part.pFirstName_)
Part.pMiddleName=ADDRESS(Part.pMiddleName_)
Err# = PadegGetFIOParts(FIO, Part)
MESSAGE(CLIP(Part.pLastName_)&' '&CLIP(Part.pFirstName_)&' '&CLIP(Part.pMiddleName_))
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 17:20
Admin
Хехе... и в первый раз я отвечал

В тот раз на коленке написал не проверяя
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 17:21
Admin
Завтра еще гляну. Первый час ночи. И в Clarion 10 выводит писать. С6 не запускается на x64

Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 18:46
RaFaeL
Оу, работает
Даже с отчеством
Спасибо огромное!
Переменные строковые только за группу надо вынести
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 20:16
RaFaeL
На выходе оказалось что функция толком и не работает )) Т.е. она делит на части, но только если ФИО записано в правильном порядке, а такое и без функции сделать много ума не надо ))
Помогите с прототипом функции (Padeg.dll)
Добавлено: 01 Декабрь 2016, 23:15
Игорь Столяров
RaFaeL писал(а):На выходе оказалось что функция толком и не работает
На Dadata.ru есть такой запрос ... Или через сервис не интересно ?
Помогите с прототипом функции (Padeg.dll)
Добавлено: 02 Декабрь 2016, 1:02
RaFaeL
В курсе, но хотел сделать то же самое на основе локальной библиотеки. Можно, в принципе, оба способа прикрутить
Помогите с прототипом функции (Padeg.dll)
Добавлено: 02 Декабрь 2016, 1:49
Admin
RaFaeL писал(а):Переменные строковые только за группу надо вынести
Да вроде пробовал не помогало. Может то что ночь и тупил.
Помогите с прототипом функции (Padeg.dll)
Добавлено: 02 Декабрь 2016, 9:25
Ал
Admin писал(а):Завтра еще гляну. Первый час ночи. И в Clarion 10 выводит писать. С6 не запускается на x64

? - на 64 гоняю С6 на Oracle VirtualBox, там плагин доставить и все видно - диски/флешки и проч.
ps - конечно на VirtualBox XP стоит

Помогите с прототипом функции (Padeg.dll)
Добавлено: 02 Декабрь 2016, 11:40
PavelNK
Код: Выделить всё
program
pLastName CSTRING(101)
pFirstName CSTRING(101)
pMiddleName CSTRING(101)
PartsFIO GROUP,TYPE
apLastName LONG
apFirstName LONG
apMiddleName LONG
nLastName LONG
nFirstName LONG
nMiddleName LONG
END
map
MODULE('Padeg.dll')
PadegGetSex(*CSTRING),LONG,PASCAL,RAW,NAME('GetSex')
PadegGetFIOParts(*CSTRING,*PartsFIO),LONG,PASCAL,RAW,NAME('GetFIOParts')
END
end
FIO CSTRING(256)
Part GROUP(PartsFIO)
END
code
FIO='Пупкин Василий Иванович'
stop(PadegGetSex(FIO)) !Просто проверяем что библиотека работает
Part.nLastName = 100
Part.nFirstName = 100
Part.nMiddleName = 100
pLastName = all('<0>',100)
pFirstName = all('<0>',100)
pMiddleName = all('<0>',100)
Part.apLastName = address(pLastName)
Part.apFirstName = address(pFirstName)
Part.apMiddleName = address(pMiddleName)
Err# = PadegGetFIOParts(FIO, Part)
stop(err#)
stop(clip(pLastName) &'/'& clip(pFirstName) &'/'& clip(pMiddleName))
L# += 1
Помогите с прототипом функции (Padeg.dll)
Добавлено: 02 Декабрь 2016, 16:53
Admin
Ал писал(а):конечно на VirtualBox XP стоит
Не это не нравится. Так то 3 компа дома. Есть где поюзать C6