C# tanımlamalarını Delphi'ye çevirmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

C# tanımlamalarını Delphi'ye çevirmek

Mesaj gönderen ertank »

Merhaba,

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
    };    
Tanımın C# kullanımı

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;
            }
Cevapla