Что не так?
Сравните последовательность вызовов функций с примерами, что поставляются с API.
Наверняка забыли что-то инициализовать.
вопрос отпадает, забыл заполнить поле - info.group, но странно что получал 2 ошибку а не 3 т.е. прочие ошибки а не invalid data

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
[StructLayout(LayoutKind.Sequential)]
public struct DemoAccountInfo
{
public int login;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=16)]
public string password;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=16)]
public string phonepassword;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=64)]
public string name;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=16)]
public string group;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string country;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string city;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string state;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=16)]
public string zipcode;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string address;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string phone;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)]
public string email;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=72)]
public string unused;
public int leverage;
public double balance;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=20)]
public string reserved;
}
public class MtNewDemo
{
[DllImport("c:/api/Client/mtapi.dll")]
public static extern int MtOpenDemoAccount( int handle, ref DemoAccountInfo info );
}
DemoAccountInfo info = new DemoAccountInfo();
info.address = "some address";
info.city = "Moscow";
info.country = "Russia";
info.email = "john@smith.com";
info.name = "John Smith";
info.phone = "123456789";
info.state = "none";
info.zipcode = "603123";
info.leverage = 100;
info.balance = 5000;
//вызов функции
MtNewDemo.MtOpenDemoAccount( handle, ref info );
Что не так?