Ошибки, баги, вопросы - страница 3443

 

FileIsExist () предназначен только для проверки существования файла? Раньше это работало и для проверки существования папки, а теперь нет.

Вот такой код:

void OnStart()
{
  string manager  = "Manager\\";

  if (FileIsExist (manager + "0", FILE_COMMON)) Print ("Папка уже существует");
  else
  {
    Print ("Создадим папку");
    Print (FolderCreate (manager + "0", FILE_COMMON));
  }
}

выдаёт следующий результат после трёх запусков:

Создадим папку
true
Создадим папку
true
Создадим папку
true

По логам понимаю, что FileIsExist () не видит ранее созданную папку.

 
Andrey Dik #:

FileIsExist () предназначен только для проверки существования файла? Раньше это работало и для проверки существования папки, а теперь нет.

Вот такой код:

выдаёт следующий результат после трёх запусков:

Создадим папку
true
Создадим папку
true
Создадим папку
true

По логам понимаю, что FileIsExist () не видит ранее созданную папку.

Так в справке же написано, что если это директория, то функция вернёт false, и нужно по коду ошибки определять, что это папка. У тебя и возвращается false.
 
A100 #:
Ошибка при компиляции:

MQL путает макрос и оператор

Не вижу ошибки. В примере везде после строки определения макроса слово delete - макрос. И только макрос.

 
Artyom Trishkin #:
FileIsExist

Да, действительно.

Посмотрел в своих старых кодах и раньше это работало года 3 назад, не обратил внимания, что я делал ещё проверку на ошибку 5018, которая как раз и говорила что это папка.

Отбой.

 
fxsaber #:

Не вижу ошибки. В примере везде после строки определения макроса слово delete - макрос. И только макрос.

Макрос определен в параметрической форме - соответственно скобки - это неотъемлимая его часть. А без скобок - это и не макрос вовсе. Вот подобный, работающий на MQL пример:

int x() { return 1; }
int x =          2;
void OnStart()
{
    Print( x() ); //x со скобками - функция   //нормально
    Print( x   ); //x без скобок - переменная //нормально
}
Соответственно:
#define delete(X)    delete X
class A {} *a = new A;
void OnStart()
{
    delete( a ); //(1)//delete со скобками - макрос  //нормально
    delete  a  ; //(2)//delete без скобок - оператор //Error: argument expected for the function-like macro 'delete'
}
 
Неделю назад создал ветку, но не получил ни единого ответа. Скопирую сюда.

Зашел на сайт с классического firefox, но попытка залогиниться с браузера Palemoon (портативный браузер, разновидность firefox) или Comodo IceDragon (также портативный, на базе firefox 65.0.2) - получаю ошибку "Неверный логин или пароль". С чем это может быть связано? С другими сайтами таких проблем не было.
 
ЗДРАВСТВ КАКУЙТЕ ПОДСКАЖИТЕ ПОЖАЙЛУСТО КАК ВОСТАНОВИТЬ СВОЙ АКАУНТ ЕСЛИ НЕТ ДОСТУПА К СТАРОЙ ПОЧТЕ НЕ ПОРОЛЯ НЕ ЛОГИНА НЕ ПОМНЮ НАЗВАНИЕ ПОЧТЫ ТОЛЬКО ОСТАЛОСЬ
 
A100 #:

Макрос определен в параметрической форме - соответственно скобки - это неотъемлимая его часть. А без скобок - это и не макрос вовсе. Вот подобный, работающий на MQL пример:

Соответственно:

Путаете функцию с макросом. Макрос - это условная замена в исходнике, почти как в текстовом редакторе по CTRL+H.

 
fxsaber #:

Путаете функцию с макросом. Макрос - это условная замена в исходнике, почти как в текстовом редакторе по CTRL+H.

А в С++ тоже путают? - там нет ошибок в этом примере

По мне - так это Вы путаете параметрический и непараметрический макросы

 
Andrey Latysch #:
ЗДРАВСТВ КАКУЙТЕ ПОДСКАЖИТЕ ПОЖАЙЛУСТО КАК ВОСТАНОВИТЬ СВОЙ АКАУНТ ЕСЛИ НЕТ ДОСТУПА К СТАРОЙ ПОЧТЕ НЕ ПОРОЛЯ НЕ ЛОГИНА НЕ ПОМНЮ НАЗВАНИЕ ПОЧТЫ ТОЛЬКО ОСТАЛОСЬ

Внизу страницы "Контакты и обращения". Создайте заявку в Сервисдеск.


Свяжитесь с нами
Свяжитесь с нами
  • www.mql5.com
Вы можете вести переписку и видеть историю своих обращений в службу поддержки mql5.com, даже если вы не имеете регистрации на сайте.