Работа с библиотекой написанной на 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);
}