Автор Тема: передача widestring из скрипта Fast Script в Delphi и обратно  (Прочитано 2756 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Slesar

  • Редкий гость
  • Пол: Мужской
Столкнулся со странной проблемой:
ТЗ:в скрипте ФС необходимо использовать библиотеку написаную в делфи, но как осуществить обмен данными - хз :( числовые значения - передаются нормально и верно, если же передать строку типа widestring то dll-ка ее получит НО назад не возваращает :( Возврат длинны строки - работает исправно, но нужна работа именно со строкой....
Кто делал подобное - прошу совет.
Вот так работает: function txt(a:widestring):integerexport;stdcall;
begin
if (a[1]='S'then begin
  result
:=1;
end else begin
  result
:=0;
end;

Вот так - нет:
 [highlight=delphi]function txt(a:widestring):widestring; export;stdcall;
begin
if (a[1]='S') then begin
  result:=a+a;
end else begin
  result:=a;
end;[/highlight]
« Последнее редактирование: 01 Сентября 2010, 11:37:58 от Slesar »

Оффлайн DoReMi

  • Админы
  • *****
  • Пол: Мужской
    • БЛОГОДОРЕМИЕ
ну видемо надо юзать обычный string
а как выглядит подключение длл и вызов функции в скрипте?
Вы держитесь здесь,  вам всего доброго, хорошего настроения, здоровья. ©

Оффлайн Slesar

  • Редкий гость
  • Пол: Мужской
Нужна работа с юникод строкой :( либо примеры преобразования :)

загрузку\вызов стандартно делал:
lib:=loadLibrary('f:\probnik10.dll');

//гдето тут описание а[j]
S:=CallFunction(lib,'txt',1,[(a[j])]);


длину строки получить могу, а работу со строкой - никак :(
« Последнее редактирование: 01 Сентября 2010, 14:08:28 от Slesar »

Оффлайн DoReMi

  • Админы
  • *****
  • Пол: Мужской
    • БЛОГОДОРЕМИЕ
А там нет варианта

function txt(a:widestring):widestring; stdcall; far; external 'probnik10.dll' ?

и далее обращаться к ней
Вы держитесь здесь,  вам всего доброго, хорошего настроения, здоровья. ©

Оффлайн Slesar

  • Редкий гость
  • Пол: Мужской
к сожалению нет...а как вернуть массив значений integer

Оффлайн Slesar

  • Редкий гость
  • Пол: Мужской
хоть массивом значений передавать попробовать....