Форум ДИЦ

Пользовательский и Дилерский форум ДИЦ
Текущее время: Ср сен 26, 2018 5:19 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Ср апр 20, 2016 5:06 pm 
Не в сети

Зарегистрирован: Пт июн 29, 2012 12:18 am
Сообщения: 436
Откуда: Москва
Отсутсвие ответа на ping не всегда означает, что ресурс недоступен.

_________________
ТБ.Бюджет


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Ср апр 20, 2016 5:12 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июл 10, 2009 10:10 am
Сообщения: 61
Откуда: Перпендикулярная вселенная
Разумеется, таким способом защищают интернет ресурсы, поскольку пинг дает некоторую лишнюю информацию для злоумышленника, но кто мешает пинговать заведомо известные страницы, как Гугл и прочие...


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Вс ноя 06, 2016 9:47 am 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6478
Откуда: Новороссийск
Я бы обсудил, но в личке или аське...
Возможно?

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Вс фев 12, 2017 11:19 am 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6478
Откуда: Новороссийск
Pricol писал(а):
Всем спасибо за участие, здесь буду выкладывать решения, на которых я остановился, вдруг кому пригодятся.
Цитата:
(1) Как, кодом из программы получить файл из интернета по прямой ссылке(Скачать файл)? (Наподобие DownloadInternetFile в ТБ69)

Код:
Proc DownloadFile(InternetFilePath:String;LocalFilePath:String);
  var objXMLHTTP,objADOStream: Variant;

    objXMLHTTP = AutoObject.Create("MSXML2.XMLHTTP");  --"System.Net"
    objXMLHTTP.Open("GET", InternetFilePath, 0);     
    objXMLHTTP.Send;                                 
    objADOStream = AutoObject.Create("ADODB.Stream");
    objADOStream.Mode = 3;
    objADOStream.Type = 1;
    objADOStream.Open;                               
    objADOStream.Write(objXMLHTTP.responseBody);
    objADOStream.SaveToFile(LocalFilePath, 2);
end;   

Примеры работы:
Код:
DownloadFile("http://Нужный_сайт.ru","D:\1.html");
DownloadFile("http://auditxp.ru/downloads/installers/AuditXP_Prof_0913.exe","D:\1.exe");
DownloadFile("http://auditxp.ru/downloads/updates/AuditXP_Prof_0916_Update_to_918.zip","D:\1.zip");
etc..
Единственный ньюанс - желательно после имени файла пихнуть ему и произвольный параметр, например  "?" + CHR(Random(25)+97) + "=" + Str(Random(1000)); Это позволит вытаскивать файл непосредственно с сайта а не из копии в КЭШ..


И дурацкий способ:
Код:
  func DownLoadFromBrowser(InetFile:String):Integer;
  var WShell:Object;
  var Answer:Integer;
    WShell = AutoObject.Create("WScript.Shell");
    Answer = WShell.Run(InetFile, 1, True);
    Return Answer;
  end;


Цитата:
(4) Как проверить наличие связи с интернет-ресурсом? (что то типа пинга или может даже телнета)

Собственно я и использовал пинг..
Код:
  func CheckInternetConnection:Integer;
  var WShell:Object;
  var Answer:Integer;
    WShell = AutoObject.Create("WScript.Shell");
    Answer = WShell.Run("ping Auditxp.ru -n 1 -l 1 -w "+Str(WaitForResponse), 0, true);
    Return Answer;
  end;



Добавлено 21.04.2016:
Заметил странное поведение строковой переменной:
Код:
  Var Shell, Folder: Object;
  Var ZIPfile :String;
  Shell=AutoObject.Create("Shell.Application");
  ZipFile = "d:\файл1.zip";
  Folder=Shell.NameSpace(ZipFile); --- Folder=Nil
  Folder=Shell.NameSpace(Str(ZipFile));  --А так все нормально, получаю ссылку на объект

Отладчик показал содержимое строковой переменной ZipFile "d:\x5Cфайл1.zip"
и так же значение конструкции Str(ZIPfile) - "d:\x5Cфайл1.zip" (Через просмотр переменных)
Интересно было бы понять в чем тут дело..

Добавлено 21.04.2016:
Продолжаю флуд:)
Процедура распаковывает ZIP Файл
*Если в качестве 2-го аргумента передать пустую строку, то файл будет распаковываться в директорию БИН

Код:
Proc ExtractZIP(DZipFile:String;DestinationFolder:String);
Var fso, Shell, ZipFolder, destFolder: Object;
Var ZIPfile :String;
  fso = AutoObject.Create("Scripting.FileSystemObject");
  Shell=AutoObject.Create("Shell.Application");
  ZIPfile=fso.GetAbsolutePathName(DZipFile);
  If Up(fso.GetExtensionName(ZIPfile))<> "ZIP" Then
    Trace("Файл имеет расширение отличное от *.zip - " + fso.GetExtensionName(ZIPfile));
  end;
  ZipFolder=Shell.NameSpace(Str(ZIPfile));
  destFolder=Shell.NameSpace(fso.GetAbsolutePathName(DestinationFolder));--"D:\Test\"));
  destFolder.CopyHere(ZipFolder.Items);
end;     


Добавлено 27.05.2016:
Нижеприведенная процедура создает Зип-архив и запаковывает в него указанную InputFolder
Строка Write("PK" + Chr(5) + Chr(6) + Repstr(Chr(0), 18)); - заголовок стандартного Зип-архива

Код:
  Proc CreateZIP(ZipFile:String;InputFolder:String);

  Var fso, Shell: Object;
  Var source:Object;
  Var Timer:Numeric;

    fso = AutoObject.Create("Scripting.FileSystemObject");
    Shell=AutoObject.Create("Shell.Application");
    fso.CreateTextFile(ZipFile,True).Write("PK" + Chr(5) + Chr(6) + Repstr(Chr(0), 18));
    source = Shell.NameSpace(Str(InputFolder));
    Shell.NameSpace(Str(ZipFile)).CopyHere(source.Items);
    While Shell.NameSpace(Str(ZipFile)).Items.Count < Shell.NameSpace(Str(InputFolder)).Items.Count do
      Hint("Упаковка резервных копий бланков программы", Shell.NameSpace(Str(ZipFile)).Items.Count, Shell.NameSpace(Str(InputFolder)).Items.Count);
      if Timer > MaxDelay4CreateZIP then break; end;   -- ProgressBar
      Timer = Timer + 0.5;
      Sleep(0.5);
    End;

  end;   


Если что то не работает или непонятно, готов помочь.


У меня вопросы...
В строке
Код:
source = Shell.NameSpace(Str(InputFolder));

не срабатывает ( возвращает "nil" ), если с строке InputFolder если либо "\\", либо ".."
Я в отладчике подставил строку без таких фрагментов - получаю {АвтоОбъект}, а иначе - nil...

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Пн сен 10, 2018 3:15 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6478
Откуда: Новороссийск
Воспользовался описанной выше ф-ей Download, работала она. А сегодня запустил - получил сообщение "Недопустимое число параметров", ругается на строку
Код:
    objADOStream.Write(objXMLHTTP.responseBody);

Что там поменялось, никто не в курсе?

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Пн сен 10, 2018 3:38 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 10:25 am
Сообщения: 4931
Откуда: Таганрог
Спасибо.
Может пора ДИЦ задуматься о базе знаний для общего доступа?

_________________
Александр Золотько, г.Таганрог


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Пн сен 10, 2018 3:49 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6478
Откуда: Новороссийск
Zolotko писал(а):
Спасибо.
Может пора ДИЦ задуматься о базе знаний для общего доступа?

Не трогай ДИЦ, они "десятку" пишут... :)
Хотя, ее же АвтоВАЗ в свое время уже "написал"... :)

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Пн сен 10, 2018 4:42 pm 
Не в сети

Зарегистрирован: Вт мар 30, 2004 12:30 pm
Сообщения: 5031
Откуда: Москва, Кустарь-одиночка с мотором
yante писал(а):
Что там поменялось, никто не в курсе?

Все эти автообъекты - изобретение не ДИЦ, смотри описание в И-нете

_________________
Андрей Булетов, Москва
PS Не стесняйтесь, поправьте меня, если я не прав!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Процедуры и функции для работы с интернетом.
СообщениеДобавлено: Пн сен 10, 2018 4:45 pm 
Не в сети

Зарегистрирован: Пн мар 29, 2004 11:50 pm
Сообщения: 6478
Откуда: Новороссийск
Все работает, я разобрался...
Просто на сайте ЦБ не выложили файл со списком банков на завтра ( хотя должны были сделать это еще около 12ч дня ), а функция не умеет обрабатывать ситуацию, когда "файл отсутствует", посему выскочила ошибка...
"сегодняшний" файл отлично скачался...

_________________
Ян Терновский, Новороссийск


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB