Invalid FileName (45)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Алексей- Софт-Центр
Ветеран
Сообщения: 387
Зарегистрирован: 26 Август 2009, 11:41
Откуда: Moscow
Контактная информация:

Invalid FileName (45)

Сообщение Алексей- Софт-Центр » 29 Август 2011, 12:27

Добрый день!
Кларион 6, АВС.
1. Стартую блокнот. Открываю файл :
http://www.ya.ru
Все нормально открывается.
2. В словаре объявляю DOS (Binary) файл c именем !FN
3. Bо вставке "до открытия файлов" :
FN='http://www.ya.ru'
Стартую программу - выдает ошибку:
File http://www.ya.ru could not be opened. Error: Invalid file name (45). ...

В чем "засада"?

Алексей

Stalker
Активист
Сообщения: 123
Зарегистрирован: 01 Декабрь 2005, 20:47
Откуда: Минск
Контактная информация:

Re: Invalid FileName (45)

Сообщение Stalker » 29 Август 2011, 21:36

Привет!
для загрузки файлов http://*.html применяю шаблон File Explore (fe.tpl) можно скачать в привате, все грузится без проблем
Специализация - программы для образования, делопроизводство, складской учет

Алексей- Софт-Центр
Ветеран
Сообщения: 387
Зарегистрирован: 26 Август 2009, 11:41
Откуда: Moscow
Контактная информация:

Re: Invalid FileName (45)

Сообщение Алексей- Софт-Центр » 30 Август 2011, 11:20

Добрый день!
Stalker!
Спасибо за совет, но не нашел этот темплатейт на фтп! :roll:
Если можно , имя папки на фтп, или киньте в мыло info@soft-center.ru

Алексей

Алексей- Софт-Центр
Ветеран
Сообщения: 387
Зарегистрирован: 26 Август 2009, 11:41
Откуда: Moscow
Контактная информация:

Re: Invalid FileName (45)

Сообщение Алексей- Софт-Центр » 30 Август 2011, 14:28

Добрый день!
File Explorer - это немножко (или множко) не то, что надо!

Задача состоит в том, чтобы прочитать файл, находящийся на страничке сайта, типа :
http://www.yandex.ru/index.html
как обычный бинарный файл (DOS (bin))

Алексей

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2322
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Re: Invalid FileName (45)

Сообщение Дед Пахом » 30 Август 2011, 14:41

Для начала его нужно скачать.
С уважением, ДП

Алексей- Софт-Центр
Ветеран
Сообщения: 387
Зарегистрирован: 26 Август 2009, 11:41
Откуда: Moscow
Контактная информация:

Re: Invalid FileName (45)

Сообщение Алексей- Софт-Центр » 30 Август 2011, 16:31

Добрый день!

Скачать: чем?
(все это должно происходить в рамках программы)

Алексей

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2322
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Re: Invalid FileName (45)

Сообщение Дед Пахом » 30 Август 2011, 16:49

Из первого попавшегося: http://www.clarionlife.net/ далее Файлы >> Internet, выбирайте что больше нравится.
С уважением, ДП

Алексей- Софт-Центр
Ветеран
Сообщения: 387
Зарегистрирован: 26 Август 2009, 11:41
Откуда: Moscow
Контактная информация:

Re: Invalid FileName (45)

Сообщение Алексей- Софт-Центр » 31 Август 2011, 11:04

Добрый день!
Дед Пахом: спасибо за советы ( и за те , которые впереди по этой теме - это чтобы не забыть потом сказать "спасибо" :) )

Или я чего-то не понимаю, или я чего-то не так прошу! (В любом случае виноват я :) )
Все предложенные варианты типа этого:
Для того, чтобы открыть страницу выполняется команда:
?OLE{'Navigate("file://' & CLIP(inFileName) & '")'}
Основой любого html-документа являются ссылки. И основная задача состоит в том, чтобы перехватить нажатие на ссылке в html-документе и выполнить свое действие.
НО МНЕ ЭТОГО НЕ НАДО!!!!!
У меня другая ОСНОВНАЯ задача!
Что мне надо:
1. ( и единственное) Прочитать страницу сайта средствами клариона , используя обычный драйвер DOS (Binary).
И здесь у меня ОСНОВНАЯ проблема в том, что я не могу (не знаю, не умею) правильно указать имя файла (Index), чтобы кларион понял, что это страница в глобальной сети. Пробовал и:
FN='http://www.yandex.ru/index.html' и
FN='\\77.88.21.3\index.html' и
FN='file://www.yandex.ru/index.html' и
много других вариантов. В том числе просто давать команду copy (xcopy) для предварительного копирования в текстовый файл.
Везде выдает ошибку типа : неправильное имя файла!

Что мне не надо:
1. Открывать на экране страницу HTML
2. Разбирать HTML код
3. Открывать диалоговые окна для выбора нужной страницы
и т.д. и т.п.

Или это в принципе не возможно?

Алексей

kreator
✯ Ветеран ✯
Сообщения: 3468
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Re: Invalid FileName (45)

Сообщение kreator » 31 Август 2011, 13:11

А попробуй в словаре явно указать полный путь и из словаря же посмотреть эту таблицу.
А ещё сдается мне, что нет файла http://www.yandex.ru/index.html. Страница рисуется в динамике. Можно взять какой-нибудь сайт, где явно лежит index.html и попробовать на нем.
We are hard at work… for you. :)

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1320
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Re: Invalid FileName (45)

Сообщение Губин Игорь » 31 Август 2011, 15:46

Алексей- Софт-Центр писал(а):И здесь у меня ОСНОВНАЯ проблема в том, что я не могу (не знаю, не умею) правильно указать имя файла (Index), чтобы кларион понял, что это страница в глобальной сети.
Если ты уверен, что файл именно в интернете, то действуешь неправильно.
Т.е. надо изменить логику.
1. Скачиваешь файл из интернета на диск или в память
2. Организуешь его разбор или делаешь с ним всё, что хочется.

Глобальные переменные

Код: Выделить всё

HANDLE                          EQUATE(UNSIGNED)
INTERNET_OPEN_TYPE_DIRECT       EQUATE(1)
INTERNET_OPEN_TYPE_PRECONFIG    EQUATE(0)
INTERNET_OPEN_TYPE_PROXY        EQUATE(3)
DWORD                           EQUATE(ULONG)
HINTERNET                       EQUATE(HANDLE)
Определения функций

Код: Выделить всё

            
            Module('API')
                    InternetAttemptConnect(DWORD),DWORD,PASCAL
                    InternetCloseHandle(HINTERNET), BOOL, PASCAL, PROC
                    InternetOpen(*CSTRING,DWORD,<*CSTRING>,<*CSTRING>,DWORD),HINTERNET, RAW, PASCAL, NAME('InternetOpenA')
                    InternetOpenURL(HINTERNET, *CSTRING Url, <*CSTRING Headers>, DWORD, DWORD, DWORD), HINTERNET, RAW, PASCAL, PROC, NAME('InternetOpenUrlA')
                    InternetReadFile(HINTERNET, *?, DWORD, *DWORD),BOOL, RAW, PASCAL, PROC
           End
Локальные переменные

Код: Выделить всё

hSession    HINTERNET
hUrl        HINTERNET
MyUrl       CSTRING(255) ! имя файла для скачивания
BufferSize      EQUATE(1024)  ! Размер буфера для скачивания
Buffer          Group ! Буффер для скачивания
                  BYTE,DIM(BufferSize)
                End
BufferLength    DWORD
BufferString     STRING(Buffersize),Over(Buffer) ! Строка для удобства работы с буффером. Именно в неё BufferString [ 1 : BufferLength ] и попадает то, что ты скачал
Agent       CSTRING('My Downloader') ! Название агента для сервера (т.е. вместо IE, Opera, Chrome, Mozilla...)
Пример кода

Код: Выделить всё

            MyURL = Clip('http://...') ! имя файла
            hSession = InternetOpen(Agent,INTERNET_OPEN_TYPE_PRECONFIG,,,0);
            if hSession ! Связь установлена, сессия открыта
                hUrl = InternetOpenUrl(hSession, myUrl,,0,0,0)
                If hUrl ! Файл обнаружен и готов к чтению
                    Loop
                        Buffer = All('<0>')
                        InternetReadFile(hUrl, Buffer, Buffersize, BufferLength)
                        if BufferLength <> 0 Then ! Скачан очередной буфер в Buffer длиной BufferLength
                              ! Тут ты делаешь с этим Buffer/BufferString всё, что сочтёшь нужным( пишешь в файл, присваиваешь строке...)
                        end
                    until BufferLength = 0
                   InternetCloseHandle(hUrl)
               End
          End
Это я только кажусь дураком! На самом деле я полный идиот!

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1320
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Re: Invalid FileName (45)

Сообщение Губин Игорь » 31 Август 2011, 15:52

kreator писал(а):А попробуй в словаре явно указать полный путь и из словаря же посмотреть эту таблицу.
А ещё сдается мне, что нет файла http://www.yandex.ru/index.html. Страница рисуется в динамике. Можно взять какой-нибудь сайт, где явно лежит index.html и попробовать на нем.
На самом деле глубоко фиолетово (т.е. без разницы), генерируется страница динамически или статически, т.к. это дело сервера, и клиенту подсовывается уже готовый результат работы.
Это я только кажусь дураком! На самом деле я полный идиот!

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4320
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Re: Invalid FileName (45)

Сообщение Игорь Столяров » 31 Август 2011, 17:10

Губин Игорь писал(а): Если ты уверен, что файл именно в интернете, то действуешь неправильно.
Т.е. надо изменить логику.
1. Скачиваешь файл из интернета на диск или в память
2. Организуешь его разбор или делаешь с ним всё, что хочется.
Полностью согласен с выше написанным. Получить доступ к некоторому файлу на локальном диске и по протоколу HTTP (или FTP) - это не одно и тоже.
Нужно грузить файл по протоколу на диск (например в TEMP) или в область памяти, и потом уже как-то получать доступ к его содержимому (text, binary, zip и т.д.)
Описанный ниже способ загрузки файла (страницы) по HTTP - рабочий, но есть проблемы работы через PROXY.
Если не хочешь сильно напрягаться - можно воспользоваться библиотекой Catalyst Socket Tools (есть в FTP разделе форума), там
все делается одной командой:

LocalFile_ = Clip(LongPath(System{Prop:TempPath})) & 'yandex.html'
URL_ = 'http://www.yandex.ru/index.html'

If HttpDownloadFile(LocalFile_,URL_,HTTP_TIMEOUT,HTTP_OPTION_NOCACHE) <> False
! Открываем LocalFile_ на диске как угодно ...
end

P/S: код писал на память - могут быть орфографические АшиПки - лучше проверить по справке CST ... ;)
«V» значит Вендетта !

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1320
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

Re: Invalid FileName (45)

Сообщение Губин Игорь » 31 Август 2011, 18:13

По поводу прокси - что есть, то есть. Но тут уж (как меня в своё время просвещали) вручную настроиться на все виды прокси не проще, чем отловить все глюки в виндоус :lol:
Каталист, наверное, более "умный" в этом смысле.
Это я только кажусь дураком! На самом деле я полный идиот!

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2322
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Re: Invalid FileName (45)

Сообщение Дед Пахом » 31 Август 2011, 20:23

Предвижу вопрос "А как же Блокнот, он же умеет?" Ну и? Блокнот умеет, а Калькулятор не умеет, и что?
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4320
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Re: Invalid FileName (45)

Сообщение Игорь Столяров » 31 Август 2011, 20:23

Губин Игорь писал(а):Каталист, наверное, более "умный" в этом смысле.
Да, причем решение великолепное по свое простоте. Он использует текущие настройки прокси Windows для MS Explorer ... ;)
«V» значит Вендетта !

Ответить