Штатный GetLastError(); здесь наверно ничего не дает,
но как выдернуть GetLastError() из Kernel32.dll я не придумал.
но как выдернуть GetLastError() из Kernel32.dll я не придумал.
да, получается коллизия с именами функций. после вызовов dll-функций будем заполнять last_error значением, полученным из системной (kernel32.dll) функции GetLastError
Может нужно использовать не CopyFileA("G:\tst\111", "G:\tst\222", 0), а CopyFileA("G:\\tst\\111", "G:\\tst\\222", 0) ?
Может нужно использовать не CopyFileA("G:\tst\111", "G:\tst\222", 0), а CopyFileA("G:\\tst\\111", "G:\\tst\\222", 0) ?
кстати, да. '\t' преобразуется к символу табуляции
Может нужно использовать не CopyFileA("G:\tst\111", "G:\tst\222", 0), а CopyFileA("G:\\tst\\111", "G:\\tst\\222", 0) ?
кстати, да. '\t' преобразуется к символу табуляции
И таки ДА!
После исправления все пошло.
Спасибо за подсказку :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
импортируйте Kernel32.dll, опишите функцию
bool CopyFileA(string source_file, string destination_file, bool if_exist);
и используйте её
и в тестовый индикатор сделал такую вставку:
#include <stdlib.mqh>
#import "Kernel32.dll"
bool CopyFileA (string source_file, string destination_file, bool if_exist);
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
int res=CopyFileA("G:\tst\111", "G:\tst\222", 0);
if (res==0)
{
int err=GetLastError();
string errS=ErrorDescription(err);
Print("err= " + err +" errS= " + errS);
}
else
{
Print("===",res);
}
В пути специально использовал диск с FAT чтоб избежаоть накладок с правами доступа.
Но всеравно CopyFileA возвращает 0 и ничего не копирует.
Штатный GetLastError(); здесь наверно ничего не дает,
но как выдернуть GetLastError() из Kernel32.dll я не придумал.
Может кто-то рашал эту задачу с копированием?