Работа с библиотекой написанной на Delphi - C#
Формулировка задачи:
Здравствуйте.
Есть библиотека написанная на делфи.
В этой библиотеке есть метод:Этот метод при вызове возвращает истину если сервер отправил сообщение клиенту.
Пишу так:
Ругается на дату в методе TI.GetMessagePopup. Как я понимаю это из-за того что TDateTime в делфи не тоже самое что DateTime в C#.
Что можно сделать?
function GetMessagePopup(out Mess: WideString; out TimeSend: TDateTime; out TimeDeliv: TDateTime): WordBool;
public void GetMessage() { string message; DateTime TimeSend = new DateTime(); DateTime TimeDeliv = new DateTime(); if (TI.GetMessagePopup(message, TimeSend, TimeDeliv)) //если сервер отправил сообщение { Message_form mess_fr = new Message_form(); mess_fr.ShowDialog(); mess_fr.label1.Text = "Сообщение отправлено:" + TimeSend.ToString(); mess_fr.label2.Text = "Сообщение принято:" + TimeDeliv.ToString(); mess_fr.richTextBox1.AppendText("Сообщение:" + message); } }
Решение задачи: «Работа с библиотекой написанной на Delphi»
textual
Листинг программы
[DllImport("dllname.dll")] // [return: MarshalAs(UnmanagedType.I2] static extern ushort /* bool */ GetMessagePopup( out IntPtr Mess, out double TimeSend, // Если TDateTime действительно == double out double TimeDeliv); ... IntPtr pMem; if (GetMessagePopup(out pMem, ...) != 0) { // создается новый string, память копируется, поэтому можно спокойно освобождать память по адресу pMem сразу за методом string mess = Marshal.PtrToStringBSTR(pMem); Marshal.FreeBSTR(pMem); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д