Подскажите в чем ошибка, не могу удалить капчу из папки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vasa2, 25 Oct 2011.

  1. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Подскажите в чем ошибка, не могу удалить капчу из папки, я вытаскиваю с интернета и сохраняю капчу при открытии програмы, потом ее разгадывает сервис antigate я отправляю данные в интернет и потом капча удаляется и загружается новая.
    Вот код загрузки и удаления капчи:
    PHP:
         DeleteFile(ProgramDirectory+'/captcha.jpg');
         
    Capcha; (Функция получающая капчу)
         
    Image1.Picture.SaveTofile(ProgramDirectory+'/captcha.jpg');
    Вот код на кнопке который отсылает данные на antigate:

    PHP:
    rsltedit.Text:='recognizing...';
    Button1.Enabled:=false;
    rsltedit.Text:=recognize(ProgramDirectory+filenameedit.Text,apikeyedit.Text,false,false,false,0,0);
    Button1.Enabled:=true;
    edit4.Text:=rsltedit.Text;
    Вот скриншот ошибки которую выкидывает:[​IMG]

    Я думаю что это антигейт ее использует, больше нечему, как это исправить???

    Помогите пожалуйста, очень нужно
     
  2. B0ri$ka

    B0ri$ka Banned

    Joined:
    1 Jul 2011
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Насмешил :) "Больше нечему"... хехе
    Как раз сервис антикапчи никак и не может использовать файл на твоём компе.

    Если у тебя многопоток, то файл скорее всего занят другим потоком.
    Если один поток, то тут возможны варианты:
    - файл не закрыт, а всё ещё открыт. Используй Close();
    - обращение к файлу на удаление происходит слишком быстро, то есть в файл всё ещё происходит запись данных.

    Если у тебя многопоток, то пиши всё в разные файлы, а потом их удаляй.

    Но лучше всего передавать картинку сразу на сервис и в файл ничего не писать.
    Счас скину пример на C# для anti-captcha.net
     
    #2 B0ri$ka, 25 Oct 2011
    Last edited: 25 Oct 2011
  3. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Будь мужиком! Выучи основы ОС и Delphi, что бы не писать таких глупостей!
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    там надо View CPU Window галку поставить - и все заработает
     
  5. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Толсто!
    :D

    99% вероятности, что ты просто забыл закрыть файл.
     
  6. mironich:

    mironich: New Member

    Joined:
    7 Oct 2011
    Messages:
    25
    Likes Received:
    2
    Reputations:
    0
    Randomize;
    Временной решение проблемы, DeleteFile(ProgramDirectory+'/' + Random(100000)+'.jpg');
    Была такаяже проблема, Image1.Picture.SaveTofile(ProgramDirectory+'/captcha.jpg');
    Вот зачем ее на форму пихать?!
    Сразу в файл....
    Тыж ее в ручную не вводиш...
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    И хорошо. чисто случайно в 1 момент времени Ваш Random(100000) выдает одинаковое число. что произойдет? (а по закону подлости: "все, что может произойти произойдет в самый неподходящий для этого момент")
    Решение проблемы - наследники класса TStream
     
    #7 xophet, 25 Oct 2011
    Last edited: 25 Oct 2011
  8. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Всё верно ТС думает. Если вы используете стандартное демо от antigate, то у них там косяк с освобождением памяти. Отсутствует строка multi.Free;
     
  9. B0ri$ka

    B0ri$ka Banned

    Joined:
    1 Jul 2011
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Неважно от кого демо. Сервис, размещённый в интернете, не может захватить ресурсы (файл) так, чтобы он был недоступен программам на машине. Это может сделать только программа, размещённая на том же компьютере.
     
  10. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Если вы такой умный, то может попробуйте сами? И увидите, что дело не "в сервисе, который размещен в интернете", а в коде. И если что-то в коде программы использует файл, то удалить его не получится. При чем тут вообще интернет? Вы в курсе, что за переменная "multi" в этом демо и что она делает?
     
  11. B0ri$ka

    B0ri$ka Banned

    Joined:
    1 Jul 2011
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Я о том и говорю, что проблема именно в коде.
    А вы говорите, что ТС прав, который говорит следующее "
    Я думаю что это антигейт ее использует, больше нечему..."
    А это бред! Антигейт не может использовать файл, т.к. антигейт расположен в интернете.
     
  12. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Вы цепляетесь к словам. Можно и в вашем первом "совете" найти приличное количество ерунды
     
  13. B0ri$ka

    B0ri$ka Banned

    Joined:
    1 Jul 2011
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Для программиста каждый символ важен. Замени точку на запятую - и потеряешь кучу денег.
    И ни к чему я не цепляюсь. Мне не нравится, когда люди говорят ерунду.
     
  14. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    у меня в программе есть ручной ввод капчи и есть через антигейт, если ручной то все норм работает, а если антикапча то выдает ошибку.
     
  15. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Дак что насчет функции антигейта? Используете из их демо? У них там пропущена строка multi.Free;
     
  16. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    да, использую их демо, сейчас нет возможности проверить, а "multi.Free;" вставить в конец вункции?
     
  17. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    в принципе да
     
  18. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Спасибо, все работает.