Вызов ф-ции из библиотеки на Си

Jozo
Дата: 12.10.2006 10:38:42
Всем привет! Что-то голова не работает помогите плиз..

есть dll на C и функция в ней обьявлена как.

char * Get_Adrr(int mode);

в дельфевом приложении соотвественно
function Get_Adrr(mode: Integer): PChar; stdcall; external dll_name;
....
var
Res: Pchar;
St:String;
begin
....
res := Get_Adrr(0);

 возвращает пустую строку, тода как. вот таким образм можно выдернуть 
 все, что нужно.

 for I := 0 to Len do
 begin
      St := St + Res[I];
 end;
как бы от цикла избавиться ... и нормально строку получать от ф-ции ???
ZrenBy
Дата: 12.10.2006 10:44:22
Jozo

есть dll на C и функция в ней обьявлена как.
char * Get_Adrr(int mode);
...
...
...
function Get_Adrr(mode: Integer): PChar; stdcall; external dll_name;


cdecl ?
FlyD
Дата: 12.10.2006 10:45:05
StrPas + F1

Posted via ActualForum NNTP Server 1.3

Jozo
Дата: 12.10.2006 10:50:41
ZrenBy
пробовал .. не выходит

FlyD
Рано ей еще пользоваться PChar пустой
FlyD
Дата: 12.10.2006 10:55:25
Jozo

FlyD
Рано ей еще пользоваться PChar пустой

1. Это ответ на Ваш вопрос "как бы от цикла избавиться".
2. PChar может быть действительно пустым. Вы уверены, что
верно задали значение входного параметра?
3. Что значит пустой? Равно nil или ''?

Posted via ActualForum NNTP Server 1.3

Petro123
Дата: 12.10.2006 10:56:51
s : AnsiString

s := Get_Adrr(3)
у меня работало без Pchar
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
mikolas
Дата: 12.10.2006 10:59:00
А может попробывать Result:=PChar(Get_Adrr(mode))?
mikolas
Дата: 12.10.2006 10:59:51
Или вариантом её взять?
Jozo
Дата: 12.10.2006 11:21:41
Все.. разобрался
setString вполне подошел :)