singlepost

Программа для связи с ФТП << На главную или назад  

Здрасти всем!Стоит следующая задача-
необходимо чтобы программа отслеживала изменения(по дате и времени) в экселевском файле и каждые 15 минут, если были измения отправляла его на FTP-сервер. Написать надо на Делфи, помогите пожалуйста.

10 ответов в теме “Программа для связи с ФТП”

  1. 1
    Александр Чигринец ответил:

    Не понятно: дату и время нужно читать из ячеек экселя или просто смотреть дату подификации Экселевского файла?

  2. 2
    Человек Имени ответил:

    http://www.purearea.net/pb/english/manual/filesystem...
    А для отправки по фтп – делайте батники(если горит срочно такое наваять) и используйте их. Пример запуска(на сях, но с помощью API функи):
    ShellExecute(hwnd,0,"C:\\Program Files\\ATM watcher\\atm_ftp01.bat",0,0,SW_SHOW);
    естественно в батнике идёт обращение к стандартному виндозному фтп клиенту(вот этому: %systemroot%/system32/ftp.exe)

    Если хочешь писать свой фтп-клиент, то это (надеюсь) тебе поможет:

    HINTERNET ses;
    HINTERNET hconnect;

    char a[1024];
    char c[1024];
    char* lpPath;

    char* KillBase(char* lpBase,char* _lpPath)
    {
    char a[1024];
    ExtractFilePath(lpBase,a);

    if (!(lstrlen(a)==(lstrlen(_lpPath))))
    {
    for (int i=lstrlen(a);i>0;i–)
    {
    _lpPath[i-1]=0;
    }
    return &_lpPath[lstrlen(a)];
    }
    else
    {
    return (char*)"";
    }
    }

    main()
    {
    ses=InternetOpen("ftpX v.0.0.0.1",INTERNET_OPEN_TYPE_PRECONFIG,0,0,INTERNET_FLAG_ASYNC);
    if(!ses)
    {
    MessageBox(0,"Some error on InternetOpen [step 1]","ERROR",MB_ICONERROR);
    }
    hconnect=InternetConnect(ses,"192.168.61.164",INTERNET_DEFAULT_FTP_PORT,"логин","пороль",INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
    if(!hconnect)
    {
    MessageBox(0,"Some error on InternetConnect [step 2]","ERROR",MB_ICONERROR); // можно и завершить выполнение кодеса
    }
    lstrcpy(a,lpszFileName);
    lstrcpy(c,KillBase(lpPath,(char*)lpszFileName));
    FtpPutFile(hconnect,a,c,FTP_TRANSFER_TYPE_BINARY,0);
    }

  3. 3
    Ярослав Вавилкин ответил:

    Александр Чигринец , дату и время последнего изменения файла(свойства).

  4. 4
    Ярослав Вавилкин ответил:

    Человек без Имени, спасибо, но си крайне хреново понимаю)))

  5. 5
    Александр Чигринец ответил:

    Тогда не очень понятно, в чём смысл уточнения, что файл Экселевский? :-)
    Опередить время файла можно так:
    var
    fileTime
    fileTime := FileDateToDateTime(FileAge('d:\fileName.xls'));

    Код работы с FTP Человек Без Имени привёл (это с применением WinInet)

  6. 6
    Александр Чигринец ответил:

    Прошу прощения, имя файла, конечно, в кавычках должно быть.

  7. 7
    Ярослав Вавилкин ответил:

    экселевский, это я для полноты восприятия задачи. А получилось, что ввёл в заблуждение. Извинияюсь)))

  8. 8
    Александр Чигринец ответил:

    Приведённый Сишный код практически один в один переводится в Дельфёвый, поскольку там сплошные вызовы APIшных функций. ;-)

  9. 9
    Ярослав Вавилкин ответил:

    Ясно. Спасибо большое.

  10. 10
    Александр Чигринец ответил:

    Библиотека работы с FTP подключается строчкой uses WinInet;

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.