Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 633

[Удален]
hoz:


Благодарю. Как-то я сразу не догадался :) Пробывать буду. Но, на данный момент, уже замечу, что "Каталог программы" перенёсся сразу по нормальному пути:

 Как и раньше. Хотя "Общая папка данных" всё же осталась тут:

 

хм, от администратора.... надо ли? народ не знает как отфаерволить.... 

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

в принципе понял - установить его от имени "не администратора" 

Сенк`с !!! ))) 

_new-rena:

хм, от администратора.... надо ли? народ не знает как отфаерволить.... 

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

в принципе понял - установить его от имени "не администратора" 

Сенк`с !!! ))) 


Как перешел на Windows 8.1 так сразу и пришлось выдумывать  такой способ :)

В итоге файла как не было, так и нет. Вот текущий код класса:

// 1.1 Пишим Log-файл. ====================================================================================================================
CLogging::fWriteLog( string  fs_Txt,                           // Данные, которые требуется записать в log-файл
                      bool   fb_PrintPermission = true,        // Флаг печати комментариев
                      bool   fb_CommentPermission = true )     // Флаг показа комментариев на графике
{
   static datetime ldt_NewDayOpen = 0;
   static string   ls_FileName = "";
   datetime        ldt_CurrDayOpen = iTime( Symbol(), NULL, PERIOD_D1 );
   //---- Имя лог файла определяем один раз в сутки
   if ( ldt_NewDayOpen != ldt_CurrDayOpen )
   {
      // ls_FileName = StringConcatenate( WindowExpertName(), "_", Symbol(), "_", Period(), "-", Month(), "-", Day(), ".log" );
      ls_FileName = StringConcatenate( "T" );
      ldt_NewDayOpen = ldt_CurrDayOpen;
   }
   int handle = FileOpen( ls_FileName, FILE_READ|FILE_WRITE|FILE_CSV, "/t" );
   
   FileSeek( handle, 0, SEEK_END );
   FileWrite( handle, StringConcatenate(TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS), ": ", fs_Txt) );
   FileClose( handle );
   
//   fPrint( fs_Txt, fb_PrintPermission, fb_CommentPermission );
}

 Вызываю его из эксперта. Класс рабочий. Функцию fPrint, которая в самом низу рабочая (печатает на экран что нужно) я закомментил, т.к. тестирую именно создание и запись в файл. Длинную имени файл ограничил одним символом "T".

 Файла нет. Вот поиск выдал:


[Удален]
hoz:

В итоге файла как не было, так и нет. Вот текущий код класса:

 Вызываю его из эксперта. Класс рабочий. Функцию fPrint, которая в самом низу рабочая (печатает на экран что нужно) я закомментил, т.к. тестирую именно создание и запись в файл. Длинную имени файл ограничил одним символом "T".

 Файла нет. Вот поиск выдал:

                  

int handle=FileOpen(Symbol()+".csv",FILE_READ|FILE_WRITE|FILE_CSV);
if(handle>0)
{                  
FileSeek(handle,0,SEEK_END);
double BID=MarketInfo(Symbol(),MODE_BID);
FileWrite(handle,DoubleToString(BID,4));
}
FileClose(handle);

попробуй такое, (не люблю разбираться в чужих кодах)

И еще, рынок стоит, тики не приходят, start() не работает. Поставь код в init() и компильни... и будет тябе счастьЁоо-оО ))) !

//К рынку не забудь перекинуть в start() или как там счас по новому...

Как с помощью оператора return возвращают СТРУКТУРЫ?

Пользовательская функция может возвращать структуры или это где-то в другом месте используется?

Структура может содержать операторы, или это просто набор переменных?

Ивообще как  с ними работают? (только по-русски и без ссылок на чьи-то программы длиной в милю, можно ведь примерв попроще, типа с=а+б)

tara, я это читала. Три раза:-)) Я про оператор return спрашиваю. Я вроде как собиралась что-то там "разгрузить" чтоб не переписывать одно и то же по 5 раз. Или там что-то можно обьявить public/protected и не морочить себе я..?

Вот здесь

https://docs.mql4.com/ru/basis/operators/return

написано:

"Можно возвращать простые типы, простые  структуры, указатели объектов. При помощи оператора return нельзя возвращать любые массивы, объекты классов, переменные типа сложных структур.

"

есть у кого нибудь кусочек  кода для примера  в котором элементы массива string группируются в алфавитном порядке?

заранее благодарю.

[Удален]
Hobu:

Вот здесь

https://docs.mql4.com/ru/basis/operators/return

написано:

"Можно возвращать простые типы, простые  структуры, указатели объектов. При помощи оператора return нельзя возвращать любые массивы, объекты классов, переменные типа сложных структур.

"

Это похоже на то, что нужно?

Использованы русские идентификаторы, поэтому выглядит немного необычно:

#property strict

/******************************************************************************/
struct ОфигеннаяСтруктура {
private:
  int значение;

public:
  ОфигеннаяСтруктура(int значение = 0): значение(значение) { }
  int выдатьЗначение() const { return значение; }
};

/******************************************************************************/
ОфигеннаяСтруктура Функа(int значение) {
  ОфигеннаяСтруктура местная(значение);

  return местная; // Возвращаем структуру из функции
}

/******************************************************************************/
void OnStart() {
  Print("Начинаем безобразничать...");

  ОфигеннаяСтруктура штукаРаз = Функа(5);

  Print("Значение штукиРаз = ", штукаРаз.выдатьЗначение());

  ОфигеннаяСтруктура штукаДва;

  Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
  штукаДва = Функа(7);
  Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());

  Print("Заканчиваем безобразничать...");
}

Результат прогона этого - следующий:

23:55:39 Script 1 EURUSDm,H1: loaded successfully
23:55:39 1 EURUSDm,H1: initialized
23:55:39 1 EURUSDm,H1: Начинаем безобразничать...
23:55:39 1 EURUSDm,H1: Значение штукиРаз = 5
23:55:39 1 EURUSDm,H1: Значение штукиДва первое = 0
23:55:39 1 EURUSDm,H1: Значение штукиДва второе = 7
23:55:39 1 EURUSDm,H1: Заканчиваем безобразничать...
23:55:39 1 EURUSDm,H1: uninit reason 0
23:55:39 Script 1 EURUSDm,H1: removed
Объект штукаРаз инициализируется объектом (структурой), возвращённым из функции Функа, а объект штукаДва инициализируется значением по умолчанию, но затем выполняется присвоение ему объекта (структуры), также возвращённого из функции Функа.