Помогите с прототипом функции (Padeg.dll)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение RaFaeL »

Год назад уже задавал этот вопрос http://forum.clarionlife.net/phpbb/view ... 005#p23005 но руки не дошли попробовать, сейчас понадобилось, но ничего не получается, всегда выдает ошибку -5 на недостаточный размер буфера. Перепробовал различные комбинации, но видимо чего-то не хватает или не так делаю. В аттаче проект (6.3 но думаю везде откроется), библиотека подключена

Описание функции http://www.delphikingdom.com/asp/viewit ... 4981164050
Вложения
padeg.zip
(63 КБ) 143 скачивания
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение 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_))
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение Admin »

Хехе... и в первый раз я отвечал :)
В тот раз на коленке написал не проверяя
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение Admin »

Завтра еще гляну. Первый час ночи. И в Clarion 10 выводит писать. С6 не запускается на x64 :(
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение RaFaeL »

Оу, работает
Даже с отчеством
Спасибо огромное!
Переменные строковые только за группу надо вынести
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение RaFaeL »

На выходе оказалось что функция толком и не работает )) Т.е. она делит на части, но только если ФИО записано в правильном порядке, а такое и без функции сделать много ума не надо ))
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Помогите с прототипом функции (Padeg.dll)

Сообщение Игорь Столяров »

RaFaeL писал(а):На выходе оказалось что функция толком и не работает
На Dadata.ru есть такой запрос ... Или через сервис не интересно ?
Make Clarion Great Again ! 😎
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение RaFaeL »

В курсе, но хотел сделать то же самое на основе локальной библиотеки. Можно, в принципе, оба способа прикрутить
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение Admin »

RaFaeL писал(а):Переменные строковые только за группу надо вынести
Да вроде пробовал не помогало. Может то что ночь и тупил.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Помогите с прототипом функции (Padeg.dll)

Сообщение Ал »

Admin писал(а):Завтра еще гляну. Первый час ночи. И в Clarion 10 выводит писать. С6 не запускается на x64 :(
? - на 64 гоняю С6 на Oracle VirtualBox, там плагин доставить и все видно - диски/флешки и проч.
ps - конечно на VirtualBox XP стоит :wink:
PavelNK
Старожил
Сообщения: 279
Зарегистрирован: 15 Март 2011, 8:02

Помогите с прототипом функции (Padeg.dll)

Сообщение 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  
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Помогите с прототипом функции (Padeg.dll)

Сообщение Admin »

Ал писал(а):конечно на VirtualBox XP стоит
Не это не нравится. Так то 3 компа дома. Есть где поюзать C6
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить