Библиотеки: File Mapping без DLL - страница 4

 
sergeev:
относитесь к ним как к длинным переменный размером  sizeof(<Тип>)*<Число_Элементов>  и все пАлучится :)
Тк этот класс нужен для того чтобы только указатель передовать? Я то думал можно сразу массивы пулять :(
 
baramantan:
Тк этот класс нужен для того чтобы только указатель передовать? Я то думал можно сразу массивы пулять :(
вы хоть сами поняли, что спросили? :)
 
sergeev:
относитесь к ним как к длинным переменный размером  sizeof(<Тип>)*<Число_Элементов>  и все пАлучится :)

void OnStart()
{
CMemMapFile hmem;
int err=hmem.Open("Local\\test",111,modeCreate);

int data[];
ArrayResize(data,50);

err=hmem.Write(data,ArraySize(data)*sizeof(int));

ArrayInitialize(data,0);
hmem.Seek(0,SEEK_SET);
err=hmem.Read(data, ArraySize(data)*sizeof(int) );


hmem.Close();
  }

Я правильно зделал? Если нет то что неправильно? 

 

 

baramantan:

Я правильно зделал?
спросите это у дебага. он знает на 100%.
 
sergeev:
спросите это у дебага. он знает на 100%.

И зачем отвечать на мой пост переводя стрелки?

Ты можешь на примере показать как передать массив int или double? 

 

как же вы его проверите, если у вас даже дебага нет? привыкли в школе информатику на доске изучать без компьютера?

хотите деталей и примеров - читайте MSDN.


Вообще наглый народец бывает. Ему уже и в MQL все перенесли и разжевали всё коментами,
так за них еще и функции для их сливаторов писать :)  чудно получается. вроде как чем обязан что ли.

;)

 
sergeev:

как же вы его проверите, если у вас даже дебага нет? привыкли в школе информатику на доске изучать без компьютера?

хотите деталей и примеров - читайте MSDN.


Вообще наглый народец бывает. Ему уже и в MQL все перенесли и разжевали всё коментами,
так за них еще и функции для их сливаторов писать :)  чудно получается. вроде как чем обязан что ли.

;)

Я теперь не пойму зачем вы влезли в мои посты с моими вопросами - если на них, вы не хотите отвечать по существу? Я в шоке редакция!
 

Чтож поделать отвечу на свои вапросы сам. Пришлось ковырять этот полуфабрикат недовареный.

Данный класс не может передовать массивы int и  double по очень простой причине.

Обьявленная функция не может принимать массивы типа  int или double. Класс может передовать только uchar       " virtual int Write(const uchar &buf[],int sz); // запись в память указанное число байт "

Поковырял рецепт чтобы доворить под свои нужды, выкладываю что получилось, можно только int массивы передавать. Если автор не доварит свае творение выложу позже свою.

Файлы:
MemMapLib.mqh  17 kb
MemMap.mq5  2 kb
 
baramantan:

Чтож поделать отвечу на свои вапросы сам. Пришлось ковырять

значит я свою цель выполнил :)

Данный класс не может передовать массивы int и  double по очень простой причине.
Обьявленная функция не может принимать массивы типа  int или double.

ну дык это прописная истина. она ж uchar принимает. а не <какой_то_нужный_кому_то_тип>. 

с таким же видом можно требовать от этого, как вы выразились "полуфабриката" и сохранения массива структур со строками. Топать ножкой - почему автор не предугадал "нужный мне" формат данных.

Но вам дали одну универсальную функцию.  меньше байта уже некуда дробить. Поэтому она и сохраняется.

Так как в массив uchar  (читай байты) можно перевести любой тип данных, то именно он является самым универсальным для такого класса.

Поковырял рецепт чтобы доворить под свои нужды, выкладываю что получилось, можно только int массивы передавать.

было с uchar,  стало с int.  

да уж. прогресс :)
 
sergeev:

значит я свою цель выполнил :)

ну дык это прописная истина. она ж uchar принимает. а не <какой_то_нужный_кому_то_тип>. 

с таким же видом можно требовать от этого, как вы выразились "полуфабриката" и сохранения массива структур со строками. Топать ножкой - почему автор не предугадал "нужный мне" формат данных.

Но вам дали одну универсальную функцию.  меньше байта уже некуда дробить. Поэтому она и сохраняется.

Так как в массив uchar  (читай байты) можно перевести любой тип данных, то именно он является самым универсальным для такого класса.

было с uchar,  стало с int.  

да уж. прогресс :)

Я конечно не мега программер. Но слехка не понимаю где тут универсальность? uchar не может быть универсальным так как ограничивает пользователя, а именно:  uchar предназначен только для положительных значений. Минимальное значение равно нулю, максимальное значение равно 255.

Любые данные выходящие за пределы значения uchar становятся равными максимальным или минимальным значениям uchar.

Исходя из сказанного я и спросил с самого начала "как передовать int или double".  Я не улавливаю вашу мысль шеф.

Причина обращения: