AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.04.2007, 14:15   #1  
Gorynych is offline
Gorynych
Участник
 
15 / 17 (1) ++
Регистрация: 28.02.2006
FTP FtpFindFirstFileA реализация?
Может кто-нибудь реализовал функцию WinInet FtpFindFirstFileA?
Очень нужна....

Или подскажите, кто работал с ftp через Ax, можно ли скачать файлы по маске?
Старый 10.04.2007, 14:24   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от Gorynych Посмотреть сообщение
Или подскажите, кто работал с ftp через Ax, можно ли скачать файлы по маске?
Добраться до файла по маске можно. на форуме есть темы как. Смторите внизу страницы.
Например вот
Поиск файла по маске
работа по FTP

Последний раз редактировалось Sada; 10.04.2007 в 14:28.
Старый 10.04.2007, 16:39   #3  
Gorynych is offline
Gorynych
Участник
 
15 / 17 (1) ++
Регистрация: 28.02.2006
Поиск файла по маске понятен,
если бы можно было полностью скачать все файлы к себе с ftp.
Но как это сделать, если не знаешь списка файлов?
Старый 10.04.2007, 17:28   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от Gorynych Посмотреть сообщение
Поиск файла по маске понятен,
если бы можно было полностью скачать все файлы к себе с ftp.
Но как это сделать, если не знаешь списка файлов?
Путь известен? Тогда перебрать все файлы в директории и пока не кончатся копировать. См. функции WinApi (точно какая не помню, но что то такое там есть, ибо делал такое).
Старый 10.04.2007, 17:37   #5  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
X++:
void findZipFiles(FilePath _fullFilePath)
{
    #File
    void findFiles(FileName _path,
                  FileName _fileName,
                  FileName _prefix = this.fullFileName(_path,_fileName))
    {
        FileName    fileName;
        int         hdl;
        ;
        setprefix(_prefix);
        if (WinAPI::folderExists(_path))
        {
            [hdl,fileName] = WinApi::findFirstFile(this.fullFileName(_path,_fileName));
            while (fileName)
            {
                fileName = WinApi::findNextFile(hdl);
            }
            WinApi::findClose(hdl);
        }
    }
;
    findFiles(_fullFilePath,'*.zip');
}
X++:
FileName fullFileName(FileName _path, FileName _fileName)
{
    FileName    pathName;
    FileName    fileName;
    FileName    fileExtension;
    ;
    [pathName,fileName,fileExtension] = fileNameSplit(_fileName);
    return _path + '\\' + fileName + fileExtension;
}
ЗЫ: Не судите строго, но суть кажись должна быть понятна...

Последний раз редактировалось Sada; 10.04.2007 в 17:41.
Старый 11.04.2007, 08:14   #6  
Gorynych is offline
Gorynych
Участник
 
15 / 17 (1) ++
Регистрация: 28.02.2006
Путь - это ftp://server/
Есть логин и пароль
И как через WinApi можно подконектиться к ftp, чтобы там перебирать файлы?
У меня получилось забрать файл без проблем вот так:
h = winInet.internetConnect('sapp03','login','pwd');
if (winInet.ftpSetCurrentDirectory(h, 'out'))
{
g = winInet.FtpGetFile(h, '1.txt', 'C:\\ftp_temp\\1.txt');
}
winInet.internetCloseHandle(h);

Тут WinApi::findFirstFile и подобные вещи на сколько я понимаю не пройдут
Старый 11.04.2007, 10:07   #7  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Плохо
Старый 11.04.2007, 11:32   #8  
Gorynych is offline
Gorynych
Участник
 
15 / 17 (1) ++
Регистрация: 28.02.2006
Описал функции и получилось Может кому нужно будет.
Class WinInet
X++:
ClassDeclaration
...
DLLFunction _ftpFindFirstFile;
DLLFunction _internetFindNextFile;
 
void new()
...
    _ftpFindFirstFile = new DLLFunction(_winInet, 'FtpFindFirstFileA');
    _ftpFindFirstFile.returns(ExtTypes::DWORD);
    _ftpFindFirstFile.arg(ExtTypes::DWORD);
    _ftpFindFirstFile.arg(ExtTypes::STRING);
    _ftpFindFirstFile.arg(ExtTypes::Pointer);    // Win32_Find_Data
    _ftpFindFirstFile.arg(ExtTypes::DWord);
    _ftpFindFirstFile.arg(ExtTypes::DWord);
    _internetFindNextFile = new DLLFunction(_winInet, 'InternetFindNextFileA');
    _internetFindNextFile.returns(ExtTypes::DWORD);
    _internetFindNextFile.arg(ExtTypes::DWord);
    _internetFindNextFile.arg(ExtTypes::Pointer);    // Win32_Find_Data
 
 
container ftpFindFirstFile(int _ndl, str 255 _mask)
{
    Binary      data            = new Binary(0x200);
    ;
    return [_ftpFindFirstFile.call(_ndl, _mask, data, 0, 0), data.string(44)];
}
 
container internetFindNextFile(int _hdl)
{
    Binary      data            = new Binary(0x200);
    ;
    return [_internetFindNextFile.call(_hdl, data), data.string(44)];
}
Все остальное из Базы Знаний можно взять
За это сообщение автора поблагодарили: kashperuk (3), DreamCreator (3), rkorchagin (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
работа по FTP mit DAX: Программирование 9 19.09.2014 10:05
msdynamicsax: FTP-client within Ax Blog bot DAX Blogs 0 08.04.2009 01:06
FTP и SSL sao DAX: Программирование 1 23.03.2009 13:25
Обратная реализация Sergioso DAX: Функционал 4 14.06.2005 17:17
Реализация лизинговой деятельности компании в Аксапте ... 2b4fITin DAX: Функционал 4 19.09.2003 19:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:53.