Помогите придумать алгоритм

Тема в разделе "WASM.HEAP", создана пользователем ds, 1 дек 2007.

  1. ds

    ds New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    47
    Помогите придумать алгоритм определения является ли произвольный URL адресом файла или нет. Может решение совсем рядом, но никак не могу до него дойти, совсем уже запарился. Вариант проверять последние 3 символа отпадает, ибо масдай.
     
  2. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    а если - записать адрес в рич-эдит, куда-нить чтоб не видно его было и поиск очень просто реализуется (34 кажется урок) - сначала ищем htm потом zip ну и т.д., не так уж и много бывает файлов.
     
  3. ds

    ds New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    47
    Дело в том, что необходимо постоянно в цикле обрабатывать порядка 1к строк. На C++ Builder это будет медлено (
     
  4. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    переходи на масм - это займет минут 10 : скачай мбилдер2.0, уроки Икзелиона и - вперёд...
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Файл или каталог?
     
  6. ds

    ds New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    47
    Veter
    Весь проект переписывать нет времени
    IceStudent
    Файл (zip,rar,exe и пр.) или это каталог, страничка (php, html, htm,asp...)
     
  7. ds

    ds New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    47
    За отсутствием времени проблема решена способом, от которого первоначально было решено отказаться. Последние 3 символа строки проверяются на совпадение с rar,exe,zip,mp3,avi,wmv,flv,mpg,wma,mov,mkv,tgz,tar,wav,3gp,doc,pdf,msi,dll,vob и пр. Из недостатков - медленный и ненадежный способ (
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    да уж взять к примеру ссылку вида
    asd.asd/asd.php?asd=rar
    лучше делать запрос по этому урлу и парсеть заголовок ответа.. но в любом случае будут промахи
     
  9. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    ds
    а как же .com?
     
  10. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    а иногда можно увидеть .....rar/ - палочку не знаю кто добавляет , то ли сервер, то ли браузер...
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    ds
    тебе нужно соорудить базу всех расширений ввиде бин. дерева - поиск будет в случае кучи расширений гораздо быстрей, чем при бруте. а для хитрых урлосов вида
    нужно парсить результ их работы.
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ds
    Если в общем случае, то только по content-type + смотреть на сами данные (#8). Если у тебя URL'ы однозначные (вида host/file.ext), тогда проще твоим методом из #7.
     
  13. ds

    ds New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    47
    Всем спасибо, еще раз убедился что на васм.ру в беде не бросят )
     
  14. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    А протокол проверить не судьба?

    file:///windows/notepad - протокол file://
    http://server.domain.zone/file.extension Ясен фиг прото HTTP

    ну и так далее

    если без явного указания протолкола (/windows/notepad или /program%20files/office10/i386/mshta), то попробуй
    проверить на запускаемость. Типа bat файл создай
    Код (Text):
    1. REM checktool.bat
    2. @echo off
    3. %CH_MSG%="checking for"
    4. %URL%=%1%
    5. echo %CH_MSG% %URL% ......
    6. start %1%
    7. echo [ OK ]
    8. ну типа того (я не знаю как условия ставить)