Autor Téma: Voláni dll funkce v Delphi 10.1 - hodnota proměnné  (Přečteno 784 krát)

Offline Benjamin Makovský

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: Delphi 7, Delphi 10.1
Zdravím všechny, prosím o radu.

V Delphi 7 používám volání  funkce z externího dll:

function SaleReq(Request : FINANCIALREQ) : Integer; external 'hcterm.dll' name 'SaleReq';

Request je typu:

FINANCIALREQ = ^ZazFinancialReq;
   ZazFinancialReq = record
      CardNumber : array[1..20] of Char;
      Expiration : LongWord;
      Amount : array[1..13] of Char;
      SystemNumber : array[1..8] of Char;
      AutorizationCode : array[1..9] of Char;
      TranProcFlowFlags : Char;
      VariableSymbol : array[1..11] of Char;
      SpecificSymbol : array[1..11] of Char;
      SequenceNumber : array[1..10] of Char;
      AddAmount : array[1..13] of Char;
      end;

V Delphi 7  funguje bez problému. Potřebuji to překlopit do Delphi 10.1. Volání funkce funguje, ovšem hodnota Request se nenaplní mými definovanými hodnotami. Ať  tam pošlu cokoliv,  jsou tam stále stejné hodnoty. Jde o nějakou práci s pamětí jinak?

Prosím o jakoukoliv radu. Díky

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1299
  • Karma: 51
    • Verze Delphi: 10.3
Re:Voláni dll funkce v Delphi 10.1 - hodnota proměnné
« Odpověď #1 kdy: 30-11-2018, 10:33:54 »
A také bych doporučil použít packed record.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3004
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Voláni dll funkce v Delphi 10.1 - hodnota proměnné
« Odpověď #2 kdy: 30-11-2018, 10:44:52 »

function SaleReq(Request : FINANCIALREQ) : Integer; external 'hcterm.dll' name 'SaleReq';

ještě malá poznámka: nemáš uvedenu volací konvenci (stdcall nebo cdecl), ale výchozí se stejně asi neměnila.
Embarcadero MVP - Czech republic

Offline Benjamin Makovský

  • Nováček
  • *
  • Příspěvků: 8
  • Karma: 0
    • Verze Delphi: Delphi 7, Delphi 10.1
Re:Voláni dll funkce v Delphi 10.1 - hodnota proměnné
« Odpověď #3 kdy: 30-11-2018, 11:22:27 »
Díky moc! Aplikoval jsem všechny rady a zdá se, že to funguje.