Попробуйте выполнить следующее:
MemoryStream stream = new MemoryStream();
byte[] buffer = new byte[70 * 2 * sizeof(int)];
stream.Read(buffer, 0, 70 * 2 * sizeof(int));
for (int i = 0; i< 70; i++)
{
for (int j = 0; j < 2; j++)
{
Console.WriteLine(BitConverter.ToUInt32(buffer,(i * 2 * sizeof(int)) + (j * sizeof(int))));
}
}
IntPtr bufferPtr = Marshal.AllocHGlobal(BUFFER_SIZE);
//you need to allocate memory before calling the routing
byte[] buffer = new byte[BUFFER_SIZE];
Marshal.Copy(bufferPtr, buffer, 0, BUFFER_SIZE);
for (int i = 0; i < 70; i++)
{
for (int j = 0; j < 2; j++)
{
Console.WriteLine(BitConverter.ToUInt32(buffer, (i * 2 * sizeof(int)) + (j * sizeof(int))));
}
}
//method 2
int[,] array = new int[40, 2];
IntPtr bufferPtr2 = Marshal.AllocHGlobal(Marshal.SizeOf(array));
//call routine then you code below to fill managed memory.
Marshal.PtrToStructure(bufferPtr2, array);
Измените все экземпляры %SCALA_HOME%
кому: !SCALA_HOME!
, и добавьте следующую близость вершина файла:
setlocal enableextensions enabledelayedexpansion
Последние повороты на "задержанном переменном расширении", что означает что переменные, записанные в форме !VAR!
не расширены, пока они не используются, скорее чем, когда сам оператор анализируется. (В моем ограниченном опыте, и конечно в этом случае, это означает, что переменные расширения, менее вероятно, будут неправильно истолкованы как фактические конструкции синтаксиса пакетного файла.) Благодаря Patrick Cuff для указания на этот лучший способ сделать его в комментарии.
P.S.: Поскольку Вы обнаруживаете, cmd.exe
язык пакетного файла ужасно повреждается во многих отношениях. Если Вы не можете использовать подлинный язык сценариев (например, если бы Ваша задача должна быть выполнена на других компьютерах), я серьезно рекомендовал бы вывести Quick C из строя/C ++ "сценарий", который делает задание и компилирует его в.EXE.