-
Здравствуйте. у меня такая проблема. Есть функция в 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); - ошибка
Скажите как запустить это дело
-
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);
-
Кстати, в c# есть похожие функции, char.ToUpper(),string.ToUpper(). Если это вы не для тренировки, то можно эту вашу функцию в длл и не писать.
-
увидел этот ваш вопрос № 44502 на Королевстве дельфи (но там он более расширен), если все дело в том, что бы преобразовать текст в текстбоксе из пространства System.Windows.Forms к верхнему регистру, то проще будет textBox3.CharacterCasing = CharacterCasing.Upper;
|