Elimdeki bir C# uygulamasının içindeki tanımlamaları alıp kullandığı DLL dosyasını Delphi ile kullanmak istiyorum. C bilgim yeterli olmadığı için aşağıdaki tanımlamayı anlayıp Delphi karşılığını yazamadım. Yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim.
C# tanımı
Kod: Tümünü seç
[DllImport("GmpSmartDLL.dll", EntryPoint = "Json_FiscalPrinter_Echo", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern UInt32 Json_FiscalPrinter_Echo(byte[] szEcho_Out, int EchoLen_Out, int TimeoutInMiliseconds);
public static UInt32 FiscalPrinter_Echo(ref ST_ECHO pStEcho, int TimeoutInMiliseconds)
{
byte[] szJsonEcho_Out = new byte[Defines.GMP_TICKET_BUFFER];
UInt32 retcode = Json_FiscalPrinter_Echo(szJsonEcho_Out, szJsonEcho_Out.Length, TimeoutInMiliseconds);
if (retcode == 0)
{
string retJsonString = GMP_Tools.SetEncoding(szJsonEcho_Out);
pStEcho = JsonConvert.DeserializeObject<ST_ECHO>(retJsonString);
}
return retcode;
}
public class ST_ECHO
{
public UInt32 retcode;
public UInt32 status;
public byte[] kvc;
public byte ecrMode;
public UInt16 mtuSize;
public byte[] ecrVersion;
public ST_DATE date;
public ST_TIME time;
public ST_CASHIER activeCashier;
public ST_ECHO()
{
kvc = new byte[8];
ecrMode = 0;
ecrVersion = new byte[16];
activeCashier = new ST_CASHIER();
date = new ST_DATE();
time = new ST_TIME();
}
};
public class ST_CASHIER
{
public UInt16 index;
public UInt32 flags;
public string name;
public ST_CASHIER()
{
name = "";
}
};
public struct ST_DATE
{
public byte day; // 1-31
public byte month; // 1-12
public UInt16 year; // 0-99
};
public struct ST_TIME
{
public byte hour; // 0-23
public byte minute; // 0-59
public byte second; // 0-59
};
Kod: Tümünü seç
ST_ECHO stEcho = new ST_ECHO();
UInt32 resp = Json_GMPSmartDLL.FiscalPrinter_Echo(ref stEcho, Defines.TIMEOUT_ECHO);
if (resp == 0)
ParserClass.EchoStructParser(stEcho);
else
{
HandleErrorCode(resp);
return;
}