Хороший пример того, как средствами MQL4 передавать во внешнюю DLL указатель на структуру.
В этой строке опечатка: "Оказывается, что FILETIME состоит из двух DWORD, а значит DWORD - это 8 байт. Запишем все это в таблицу:"
Правильно: "Оказывается, что FILETIME состоит из двух DWORD, а значит FILETIME - это 8 байт. Запишем все это в таблицу:"
В этой строке опечатка: "Оказывается, что FILETIME состоит из двух DWORD, а значит DWORD - это 8 байт. Запишем все это в таблицу:"
Правильно: "Оказывается, что FILETIME состоит из двух DWORD, а значит FILETIME - это 8 байт. Запишем все это в таблицу:"
А что? ни у кого не было такого, что не читается первый файл в папке???
Код скопирован копи-паст, и единственное для удобства заменен принт на алерт.
этот:
int handle = FindFirstFileA(TerminalPath() + "\experts\*.mq4",win32_DATA); Print(bufferToString(win32_DATA)); ArrayInitialize(win32_DATA,0); while (FindNextFileA(handle,win32_DATA)) { Alert(bufferToString(win32_DATA)); ArrayInitialize(win32_DATA,0); }
ага... в принтах таки есть первый файл!
оно и правильно, его печаиает "первый" принт, а в алерте уже со второго до последнего.
*
блин! а как же сделать что-б за цикл алерт показал все файлы???
В совете заменить первый принт на алерт не нуждаюсь... ;)))
Небольшое замечание - FindFirstFile возвращает не указатель на найденный файл, а его хендл (HANDLE), который к указателям отношения не имеет. Хендл - это просто идентефикатор, который создается ОС и не имеет никакой привязки к адресам, как указатель.
К сожалению, скрипт из статьи CheckFindFile.mq4 не работает в современных билдах MQL4.
Может кто-нибудь поправить его или подсказать что нужно поправить?
Пробовал поменять винапи функции на юникодные, после этого появились принты в журнале, но это не список файлов, а английский алфавит
https://www.mql5.com/ru/forum/6049#comment_5405849
![Обсуждение статьи "Избавляемся от балласта самодельных DLL" Обсуждение статьи "Избавляемся от балласта самодельных DLL"](/i/community/logo_mql5_small.png)
- 2012.01.31
- www.mql5.com
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Новая статья Групповые файловые операции опубликована:
Иногда требуется проделать одинаковые операции для некоторой группы файлов. Если у вас есть список файлов, входящих в эту группу, то это не проблема. Но если этот список нужно получить самостоятельно, то возникает вопрос: "Каким образом?" В статье предлагается сделать это с помощью функций FindFirstFile() и FindNextFile(), входящих в библиотеку kernel32.dll.
Прочитать или записать один файл не является проблемой. Даже если при этом придется использовать WinAPI, как это описано в статье Файловые операции через WinAPI. Но что делать, если мы не знаем точного имени файла, известно только его местонахождение в определенной папке и задано расширение? Можно вручную каждый раз вводить нужное имя в виде параметра, но если таких файлов будет пять, десять или более? Нужен способ групповой обработки однотипных файлов в указанной папке. Для этого хорошо подходят функции FindFirstFile(), FindNextFile() и FindClose(), входящие в библиотеку kernel32.dll.
Автор: MetaQuotes Software Corp.