Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 04.08.2006, 00:55
Дельфин Дельфин вне форума
Прохожий
 
Регистрация: 28.07.2006
Сообщения: 9
Репутация: 10
По умолчанию

Майняк спасибо, терь то что надо, ток сканит долго, но эт не важно.
Но проблемы на этом не закончились, мне надо чтоб перебирало ещё диапазон подсетей, тоесть цикл в цикле, вообщем чтоб сначала выполнялся 1ый цикл, как он закончится, выполнялся 2ой, как заканчивается 2ой, дожен переключится заново 1ый, ну вы меня поняли надеюсь=)) Полазил по всяким документациям ненашёл ни чё подобного, надеюсь мне и с этим поможите

Последний раз редактировалось Дельфин, 04.08.2006 в 04:37.
Ответить с цитированием
  #17  
Старый 06.08.2006, 18:41
Дельфин Дельфин вне форума
Прохожий
 
Регистрация: 28.07.2006
Сообщения: 9
Репутация: 10
По умолчанию

Неужели это сложно осуществить или просто не ясен вопрос?
Ответить с цитированием
  #18  
Старый 31.08.2006, 23:41
Аватар для Майняк
Майняк Майняк вне форума
Начинающий
 
Регистрация: 03.02.2006
Адрес: Киров
Сообщения: 198
Репутация: 50
По умолчанию

а как же иначе? Ну, хочешь - берись за сокеты, сам пиши. Может быстрее будет немного.
Ответить с цитированием
  #19  
Старый 06.09.2006, 14:23
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
Подмигивание А почему бы не попробовать вот так?

Можно использовать функции из модуля wininet напрямую, в обходвсяких indy и т.д. Например:

// функция разбора строки на элементы по разделителю, понадобится позже

Код:
function StrToArrays(const str, r: String; out Temp: TStrings): Boolean;
var
  j: integer;
  sInStr,sSep: String;
begin
  sInStr := str;
  sSep := r;
  if Temp <> nil then
  begin
    Temp.Clear;
    while sInStr <> '' do
    begin
      j := Pos(sSep,sInStr);
      if j = 0 then j := Length(sInStr) + 1;
      Temp.Add(Copy(sInStr, 1, j-1));
      Delete(sInStr, 1, j + length(sSep) - 1);
    end;
    Result := True;
  end
  else
    Result := False;
end;

// функция заливки папки без подпапок на FTP
// параметры:
// strHost - ftp сервер, куда заливаем
// strUser - имя пользователя
// strPwd - пароль
// Port - номер порта, обычно используют INTERNET_DEFAULT_FTP_PORT
// localDir - локальная папка с айлами, которую следует залить на FTP
// глобальная переменная sFTPPath содержит в себе путь к папке, куда мы заливаем,если пусто - то льем в корень


Код:
function FtpSaveFile(const strHost, strUser, strPwd: String; Port: Integer; localDir: string): Boolean;
var 
  hNet,hFTP,hResult	: HINTERNET;
  sSourceDir		: String;
  bSuccess		: Boolean;
  SR			: TSearchRec;
  iProgress,
  iCount		: Integer;
  sRec			: TWin32FindData;
  saDirs                : TStrings;

begin

  Result := False;
  sSourceDir := IncludeTrailingPathDelimiter(localDir);
  sFTPPath := StringReplace(sFTPPath,'\','/',[rfReplaceAll]);

  { Открываем сессию }
  hNet := InternetOpen('TestSession', 			// Агент
                        INTERNET_OPEN_TYPE_PRECONFIG, 	// Тип доступа
                        nil,  				// ProxyName
                        nil, 				// ProxyBypass
                        0); 				// или INTERNET_FLAG_ASYNC / INTERNET_FLAG_OFFLINE

  { Проверяем валидность хэндла соединения }
  if hNet = nil then
  begin
    ShowMessage('Error');
    Exit;
  end; 

  { Соединяемся с FTP Сервером }
  hFTP := InternetConnect(hNet, 			// Хэндл от InternetOpen
                          PChar(strHost), 		// FTP сервер
                          port, 			// (INTERNET_DEFAULT_FTP_PORT),
                          PChar(StrUser), 		// username 
                          PChar(strPwd),  		// password
                          INTERNET_SERVICE_FTP, 	// FTP, HTTP, или Gopher?
                          0, 				// флаг: 0 или INTERNET_FLAG_PASSIVE
                          0);				// Значение CallBack'а

  if hFTP = nil then
  begin
    InternetCloseHandle(hNet);
    MessageBox(Handle,PChar(Format('Error %s',[strHost])),PChar(Caption),MB_ICONWARNING);
    Exit;
  end;

  if sFTPPath <> '' then
  begin
    saDirs := TStringList.Create;
    StrToArrays(sFTPPath,'/',saDirs);
    for iCount := 0 to saDirs.Count - 1 do
    begin
      FtpCreateDirectory(hFTP,PChar(saDirs.Strings[iCount]));
      bSuccess := FtpSetCurrentDirectory(hFTP, PChar(saDirs.Strings[iCount]));
      if not bSuccess then
      begin
        InternetCloseHandle(hFTP);
        InternetCloseHandle(hNet);
        MessageBox(Handle,PChar(Format('Error %s',[saDirs.Strings[iCount])),PChar(Caption),MB_ICONWARNING);
        Exit;
      end;
    end;
    saDirs.Free;
  end;

  if FindFirst(sSourceDir + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
      	FtpPutFile(hFTP,
         	    PChar(sSourceDir + SR.Name),
                    PChar(SR.Name),
                    FTP_TRANSFER_TYPE_BINARY,
                    0);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
  InternetCloseHandle(hFTP);
  InternetCloseHandle(hNet);

  Result := True;

end;

Так вот, можно использовать возвращаемое значение InternetConnect для проверки доступа...
Ответить с цитированием
  #20  
Старый 12.09.2006, 22:28
DIMzOne DIMzOne вне форума
Прохожий
 
Регистрация: 12.09.2006
Сообщения: 5
Репутация: 10
По умолчанию

А можно какнить ускорить процесс сканирования в случае с IdFTP? Например использованием таймера или Application.ProcessMessages ?
Или может есть другой способ?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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


Часовой пояс GMT +3, время: 12:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter