Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IdFTP, обмен файлами, Indy 10, BDS2006 
:(
    Опции темы
Akella
Дата 10.10.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



смотрю 2 модуля (старый и новый) - ничем не отличаются
(получение данных по Ftp)

Код

  try
    Application.ProcessMessages;
    if IdFTP.Connected then  begin
        Log('Успешное подключение к серверу обмена информацией...');
        Application.ProcessMessages;
        Log('попытка смены каталога на "out"');
        IdFTP.ChangeDir('out');
        IdFTP.List;//IdFTP.List(slDirs,'',false);


ShowMessage(IntToStr(IdFTP.DirectoryListing.Count)); = 0!!!!!!!!
старнно, очень странно, "старый" экзешник работает, новый  - нет
получается, что h := 0, соответственно ни одного прохода

        for h := 0 to IdFTP.DirectoryListing.Count - 1 do begin
          Application.ProcessMessages;
          if (IdFTP.DirectoryListing[h].FileName = '.') or
             (IdFTP.DirectoryListing[h].FileName = '..') then continue;
          Log('Получание файла: '+IdFTP.DirectoryListing[h].FileName);
          //5 попыток

В домашней папке пользователя на FTP-сервере есть папка "out", в ней лежит пару файлов.

Добавлено @ 13:54 
из логов сервера видно, что пользователь не забирает инфу из папки
Цитата

[5] Tue 10Oct06 13:40:20 - (000010) User AKELLA logged in
[5] Tue 10Oct06 13:40:20 - (000010) User AKELLA logged in
[5] Tue 10Oct06 13:40:21 - (000010) Closing connection for user AKELLA (00:00:01 connected)
[5] Tue 10Oct06 13:45:51 - (000011) Connected to 192.168.10.20 (Local address 192.168.10.254)
[5] Tue 10Oct06 13:45:51 - (000011) User AKELLA logged in
[5] Tue 10Oct06 13:45:52 - (000011) User AKELLA logged in
[5] Tue 10Oct06 13:45:52 - (000011) Closing connection for user AKELLA (00:00:01 connected)


а вот ранее немного, когда всё работало  smile 
Цитата

[5] Tue 10Oct06 12:53:51 - (000007) User AKELLA logged in
[3] Tue 10Oct06 12:53:51 - (000007) Sending file d:\ftp\akella\out\out_kvx20060814_135250.rar
[3] Tue 10Oct06 12:53:51 - (000007) Sent file d:\ftp\akella\out\out_kvx20060814_135250.rar successfully (9606 kB/sec - 944310 Bytes)
[5] Tue 10Oct06 12:53:52 - (000007) Closing connection for user AKELLA (00:00:01 connected)


Добавлено @ 14:03 
подменил исходники модуля из архива - та же проблема, такое впечатление, что "индийцы" глюканули  smile 
PM MAIL   Вверх
Akella
Дата 10.10.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



народ, у кого есть файл IdWinsock2.hpp от Indy10, скаиньте, пожалуйста.
PM MAIL   Вверх
Snowy
Дата 10.10.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Akella @  10.10.2006,  14:56 Найти цитируемый пост)
народ, у кого есть файл IdWinsock2.hpp от Indy10
Вообще-то инди написана на дельфи,а не на плюсах.
Там нет такого файла.
PM MAIL   Вверх
Akella
Дата 10.10.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



есть, по крайней мере у меня

вот первые строки из файла
Цитата

// Borland C++ Builder
// Copyright © 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Idwinsock2.pas' rev: 10.00

#ifndef Idwinsock2HPP
#define Idwinsock2HPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>    // Pascal unit
#include <Sysinit.hpp>    // Pascal unit
#include <Sysutils.hpp>    // Pascal unit
#include <Windows.hpp>    // Pascal unit
#include <Idexception.hpp>    // Pascal unit
#include <Idsys.hpp>    // Pascal unit

//-- user supplied -----------------------------------------------------------
#error Indy 10 does not currently support C++Builder

namespace Idwinsock2
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS EIdWinsockStubError;
#pragma pack(push,1)
class PASCALIMPLEMENTATION EIdWinsockStubError : public Idexception::EIdException 
{
    typedef Idexception::EIdException inherited;
    
protected:



Добавлено @ 15:29 
и почему-то Delphi при переустановке(Repair) ругается на этот файл:
Цитата
internal error 2920. IdWinsock2.hpp

PM MAIL   Вверх
Snowy
Дата 10.10.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ну тогда тебе в раздел по билдеру.
PM MAIL   Вверх
Akella
Дата 10.10.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



я уже Delphi снёс, ща буду переустанавливать, если получиться  smile 
PM MAIL   Вверх
Snowy
Дата 10.10.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Достаточно было просто Indy переставить smile
PM MAIL   Вверх
Akella
Дата 11.10.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Цитата(Snowy @  10.10.2006,  16:43 Найти цитируемый пост)
Достаточно было просто Indy переставить smile

не получилось, т.к. ошибка 
Цитата
internal error 2920. IdWinsock2.hpp
 всё равно вылазит.

Дома переустановил Delphi.

 smile НЕ ПОМОГЛО.
Выяснил, что дело в парсере indy, т.к. при проходе дебагером видно, что список файлов папки приходит клиенту.

Поставил свойство MList в True, раньше было False и всё заработало, это судя по справке заставляет парсер работать как-то по-другому, правда, в этом случае в список как имя файла попадает и имя папки, но это не проблема.

Замечу, что смотрел исходники этого модуля месячной давности - я ничего не менял в этом модуле. Хотя сам проект разов 3-5 перекомпилировался. А проблемы начались совсем недавно, дней 5-7 назад.

Вот так вот, короче выяснил суть проблемы, но решить не удалось.
PM MAIL   Вверх
Akella
Дата 11.10.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



теперь ещё лучше smile 
fmMain.sInFolder+IdFTP.DirectoryListing[h].FileName
в FileName почему-то имя папки, где лежит файл

Добавлено @ 12:30 
это не Indy - это гемор
раньше IdFTP.RetrieveCurrentDir возвращала просто "/out"
сейчас полный путь на удалённом сервере "/C:/frp/AkellaHome/Out"
PM MAIL   Вверх
Akella
Дата 12.10.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Решил проблему, но не совсем.
Парсер Indy получив данные для парсинга в результирующий набор (IdFTP.DirectoryListing) ничего отдаёт

В итоге:
Код

    if IdFTP.Connected then  begin
        IdFTP.DirectoryListing.Clear;

        IdFTP.ChangeDir('out');
//заполняю slDirs, но без доп. данных.
        try
         IdFTP.List(slDirs,'*.*',false);
        except

        end;

        for h:= 0 to slDirs.Count - 1 do
          with IdFTP.DirectoryListing.Add do
            FileName := slDirs[h];

        for h := 0 to IdFTP.DirectoryListing.Count - 1 do begin
          Application.ProcessMessages;
          if (IdFTP.DirectoryListing[h].FileName = '.') or
             (IdFTP.DirectoryListing[h].FileName = '..') or
             (AnsiUpperCase(IdFTP.DirectoryListing[h].FileName) = '/OUT')
          then continue;

          //5 попыток
          for iTryCount := 1 to 5 do begin
            log(IntToStr(iTryCount)+'-ая попытка...');
            DeleteFile(fmMain.sInFolder+IdFTP.DirectoryListing[h].FileName);
            IdFTP.get(IdFTP.DirectoryListing[h].FileName,fmMain.sInFolder+IdFTP.DirectoryListing[h].FileName,true);


Добавлено @ 08:25 
Если у кого есть примеры с Indy10 (FTPClient), может поделитесь?
PM MAIL   Вверх
Akella
Дата 12.10.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Может кто знает, как средствами indy получить список фалов/папок на удалённом FTP-сервере?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.