Страница 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 стоит :wink:

Помогите с прототипом функции (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