Конференция ".Net" » Импотрт DLL из Delphi в C# (проблема с PChar)
 
  • GFX (17.08.06 14:39) [0]
    Здравствуйте. у меня такая проблема.
    Есть функция в dll на delphi:

    function dStrFixed(str:PChar):PChar; stdcall;
    begin
    dStrFixed:=AnsiStrUpper(str);
    end;

    Пытаюсь вызвать ее из студии - ничего не выходит:
    [DllImport("C:\\GFX\\MD.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
    public static extern char dStrFixed(char s);

    char s = 's';
    char z;
    z = dStrFixed(s); - ошибка

    Скажите как запустить это дело
  • Evgeny V © (17.08.06 15:35) [1]
    AnsiStrUpper, как и ваша функция принимает параметром указатель на строку символов заканчивающихся null.

    Попробуйте так
    [DllImport("C:\\GFX\\MD.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
    public static extern IntPtr dStrFixed(string s);

    string s = "s";
    IntPtr z = dStrFixed(s);

    string sresult=Marshal.PtrToStringAnsi(z);
  • Evgeny V © (17.08.06 15:47) [2]
    Кстати, в c# есть похожие функции, char.ToUpper(),string.ToUpper(). Если это вы не для тренировки, то можно эту вашу функцию в длл и не писать.
  • Evgeny V © (17.08.06 16:00) [3]
    увидел этот ваш вопрос № 44502 на Королевстве дельфи (но там он более расширен), если все дело в том, что бы преобразовать текст в текстбоксе из пространства System.Windows.Forms  к верхнему регистру, то проще будет  
    textBox3.CharacterCasing = CharacterCasing.Upper;
 
Конференция ".Net" » Импотрт DLL из Delphi в C# (проблема с PChar)
Есть новые Нет новых   [120149   +140][b:0][p:0]