передача параметров dll->exe
От: ssidd  
Дата: 12.02.03 15:33
Оценка:
ПОМОГИТЕ РАЗОБРАТЬСЯ!!!

DLL на delphi:
....

  TImpulsResults = packed record
        data:array [0..7] of real;
        Number:array [0..255] of char;
  end;

....


//функция в dll
Function ReturnImpuls(var ImpResult:TImpulsResults): Integer;export;stdcall;
var
    str:pchar;
    Len,i: Integer;
begin

  Len:=0;
  Len := StrLen(PChar(Form1.stNumber));

  GetMem(str,Len+2);
  str^ := Chr(0);
//  Form1.stNumber:string;

  StrLCat(str, PChar(Form1.stNumber), Len);

  for i := 0 to Len do
  begin
     ImpResult.Number[i]:=str[i];
  end;
//ShowMessage показывает что ImpResult.Number не пуст  :o
    ShowMessage(ImpResult.Number);

           ImpResult.data[0]:=Form1.stMin1;//real
           ImpResult.data[1]:=Form1.stMax1;
           ImpResult.data[2]:=Form1.stMin2;
           ImpResult.data[3]:=Form1.stMax2;
           ImpResult.data[4]:=Form1.stMin3;
           ImpResult.data[5]:=Form1.stMax3;
           ImpResult.data[6]:=Form1.stMin4;
           ImpResult.data[7]:=Form1.stMax4;
    Result:=1;
end;




EXE на visual:
.....
typedef struct tagTImpulsResults
{
    float Impuls[8];    
    char NomeroNabor[256];
}TImpulsResults;

.....
typedef int (WINAPI *PFN_ReturnImpuls)(TImpulsResults&);
.....
//вызов функции dll из exe
    PFN_ReturnImpuls pfnReturnImpuls;
    pfnReturnImpuls=(PFN_ReturnImpuls)GetProcAddress(hCBRDll,"ReturnImpuls");

    int iCode=(*pfnReturnImpuls)(ImpulsResult);
//здесь оказывается что ImpulsResult.NomeroNabor и Impuls[8] нули хотя должно быть  ???
Re: передача параметров dll->exe
От: Chaka Украина  
Дата: 12.02.03 15:49
Оценка:
Здравствуйте, ssidd, Вы писали:

S>ПОМОГИТЕ РАЗОБРАТЬСЯ!!!


sizeof(real)=6, sizeof(float)=4. Есть еще вопросы?
WBR, Chaka
Re[2]: передача параметров dll->exe
От: ssidd  
Дата: 12.02.03 16:18
Оценка:
Здравствуйте, Chaka, Вы писали:

C>Здравствуйте, ssidd, Вы писали:


C>sizeof(real)=6, sizeof(float)=4. Есть еще вопросы?


Вопросов нет!
Спасибо , а то уже не знал что делать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.