2 причина - покажите код.
может он в начале удаляет существующие файлы?
я просто код копировал с форума - давно еще. Так тоже долго думал че он файл удаляет. а там была строчка l......че-то там.
2 причина - покажите код.
может он в начале удаляет существующие файлы?
я просто код копировал с форума - давно еще. Так тоже долго думал че он файл удаляет. а там была строчка l......че-то там.
Коды не буду вставлять, там 300 строк, попробуй разберись.
Хэндлы все закрываю.
после выключения программы файлы находятся в папке.
После запуска МТ4, файлы пропадают. В этом полтергейс)
300 строк :-) большой код. лучше не выставляй, а то головы сломаем.
Это была шутка.
А если серьезно, то без кода мы конечно можем шаманить - угадывать что ж там такое, но Увы, не все, не всегда и не всё....
Нашел на форуме кусок кода. То что нужно. Практически моя ситуация.
Скрипт копирует и переименовывает файл.
Когд взят от сюда - https://www.mql5.com/ru/forum/100587
// File Read Write.mq4 // Скрипт. Положить в папку experts\scripts #property copyright "mandorr@gmail.com" #include <WinUser32.mqh> #import "kernel32.dll" int _lopen (string path, int of); int _lcreat (string path, int attrib); int _llseek (int handle, int offset, int origin); int _lread (int handle, int& buffer[], int bytes); int _lwrite (int handle, string buffer, int bytes); int _lclose (int handle); #import void start() { string text=ReadFile("C:\sc1.ex4"); WriteFile("C:\sc2.ex4",text); int count=StringLen(text); string title="Чтение из файла"; string msg="Число считанных байт: "+count+" \n" +"Cодержимое файла:\n\n"+text; MessageBox(msg,title,MB_OK|MB_ICONINFORMATION); } string ReadFile (string path) { int buffer[], count, handle, i, result; string text=""; handle=_lopen (path,0); if(handle<0) { Print("Ошибка открытия файла ",path); return (""); } count =_llseek (handle,0,2); if(count<0) { Print("Ошибка установки указателя" ); return (""); } ArrayResize(buffer,1+count/4); result=_llseek (handle,0,0); if(result<0) { Print("Ошибка установки указателя" ); return (""); } result=_lread (handle,buffer,count); if(result<0) { Print("Ошибка чтения файла " ,path); return (""); } result=_lclose (handle); if(result<0) { Print("Ошибка закрытия файла ",path); return (""); } for(i=0; i<ArraySize(buffer); i++) { text=text +CharToStr(buffer[i] & 0x000000FF) +CharToStr(buffer[i]>> 8 & 0x000000FF) +CharToStr(buffer[i]>>16 & 0x000000FF) +CharToStr(buffer[i]>>24 & 0x000000FF); } text=StringSubstr(text,0,count); return (text); } void WriteFile (string path, string buffer) { int handle, result, count=StringLen (buffer); handle=_lopen (path,1); if(handle<0) { handle=_lcreat (path,0); if(handle<0) { Print ("Ошибка создания файла ",path); return; } result=_lclose (handle); } handle=_lopen (path,1); if(handle<0) { Print("Ошибка открытия файла ",path); return; } result=_llseek (handle,0,0); if(result<0) { Print("Ошибка установки указателя" ); return; } result=_lwrite (handle,buffer,count); if(result<0) { Print("Ошибка записи в файл " ,path," ",count," байт"); } result=_lclose (handle); if(result<0) { Print ("Ошибка закрытия файла ",path); } } // End
Исходный файл (который копируется) Это скрипт - Hellow World . расширение ex4
в блокноте выглядит вот так.
Результирующий файл ( тот которые был скопирован скриптом) в блокноте выглядит вот так
Скрипт почему-то вместо пробелов вставляет какие то прямоугольники.
Из-за чего такое может быть?
он копирует не исходный файл а файл компилированный, т.е. ex4. Такое и будет.
C:\sc1.ex4
он копирует не исходный файл а файл компилированный, т.е. ex4. Такое и будет.
Файл C:\sc1.ex4 копируется в строку, потом эта строка записывается в файл C:\sc2.ex4. Но при открытии файлов в блокноте выглядят они по разному.
А какая скрипту разница какой файл вообще копировать? исходный, откомпилированный, мп3 или что нибудь еще. Задача: тупо по байтам скопировать.
Как выполняется скачивание из инета? Наверно по протоколу http.
Естественно через http:
проблемма не в http, проблема в том что файл меняет размер после скачивания. А символы "пробелы" заменяются на какие то квадратики. (аналогиная ситуация при копирование файла в пределах диска С
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Столкнулся со следующей проблемой:
Скрипт в МТ4 скачивает из интернета файл советника и файлы индикаторов. Через библиотеку kernel32.dll эти файлы записываются в дериктории к экспертам и к индикаторам.
Файлы в директории записаны.
Чтоб МТ4 увидел эти файлы, его надо перезагрузить.
При повторном запуске программы, файлы самостоятельно удаляются.
В чем может быть проблема?