Вызов функции COM
От: Yustas Россия  
Дата: 04.03.03 14:50
Оценка:
Привет всем!
Прошу прощения, если мой вопрос уже обсуждался в форуме.
Имеется простая задача вызова функции COM.

На VB экспорт описания функции и код выглядит так:

Private Declare Function mciGetErrorString Lib "winmm" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long

Dim ErrorString As String
ErrorString = Space$(256)
mciGetErrorString 256, ErrorString, Len(ErrorString)
// В переменной ErrorString содержится описание ошибки


Переписываю на C#
[DllImport("winmm.dll")]        
public static extern Int32 mciGetErrorString (Int32 dwError, String lpstrBuffer, Int32 uLength);

Вызываю:
1 способ:

String ErrorString = new String(' ',256);
mciGetErrorString (263, ErrorString, ErrorString.Length);
// ErrorString не изменяется

2 способ:
String ErrorString = new String(' ',256);            
IntPtr p = Marshal.StringToHGlobalAnsi(ErrorString);
mciGetErrorString (RetVal, Marshal.PtrToStringAnsi(p), ErrorString.Length);
ErrorString = Marshal.PtrToStringAnsi(p);
// ErrorString не изменяется


Вопрос, как правильно вызвать функцию и получить описание ошибки.

Всем большое спасибо за ответ!
Re: Вызов функции COM
От: Аноним  
Дата: 04.03.03 15:04
Оценка:
Здравствуйте, Yustas, Вы писали:

Y>Имеется простая задача вызова функции COM.


посмотри описание класса StringBuilder
PS а причем здесь COM ?
Re[2]: Вызов функции COM
От: Yustas Россия  
Дата: 04.03.03 15:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Yustas, Вы писали:


Y>>Имеется простая задача вызова функции COM.


А>посмотри описание класса StringBuilder

А>PS а причем здесь COM ?

Да, действительно, что то мысль про неизменность String в голову не пришла.
Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.