Массовая закачка музыки с VK

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Rastamanka, 4 Aug 2012.

  1. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Массовая cкачка музыки с VK

    Подкажите пишу массовый скачиватель музыки с VK по определенному ID контакта. Но появилась проблема с потоками.
    Подскажите что не так делаю.
    Все ссылки паршу в StringList а при попытке получить доступ к нему через поток вылазиет ошибка.

    http://www.sendspace.com/file/bdjbcg
     
    #1 Rastamanka, 4 Aug 2012
    Last edited: 4 Aug 2012
  2. MarkD

    MarkD New Member

    Joined:
    28 May 2012
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    http://avtuh.ru/2010/10/10/delphi-videourok-mnogopotochnost-i-sinxronizaciya.html
    Вот посмотри урок.
    Может поможет.
     
  3. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Наверно смотреть надо здесь:
    Перепиши подругому или используй критические секции. Ну а лучше почитать вот это:Martin Harvey - Threads.
     
  4. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Даже если не редактировать данные там то есть просто читать все равно не получается получить урлы с StringList.
     
  5. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    Запихать MessageBox и посмотреть что возвращает Trim(RegExp.Match[0]).
    PS: Нет студии, поэтому попробуйте сами. И книжку прочитайте все равно.
     
    #5 2echnoman, 4 Aug 2012
    Last edited: 4 Aug 2012
  6. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Возвращает мол типа нету элемента 0 ) Хотя Вызывая тоже самое вне потока все выводиться.
     
  7. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0


    ListUrlMusic.Free; - потоки не успевают отработать , а обьект уже освобожден.
    И я не могу понять почему в str := ListUrlMusic[0]; индекс всегда ноль.
     
  8. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Потому что те что после удаление те что выше смещаются на 1 положение ниже и получают индекс 0
     
  9. 2echnoman

    2echnoman New Member

    Joined:
    3 Jul 2012
    Messages:
    54
    Likes Received:
    0
    Reputations:
    0
    TStringList не потокобезопасный класс, а в коде
    возможны одновременные обращения к объекту со стороны более чем одного потока. Надо синхронизировать.
     
  10. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Подскажите как если не сложно.
     
  11. Apeckou

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

    Joined:
    23 Jan 2007
    Messages:
    143
    Likes Received:
    11
    Reputations:
    0
    при создании нового модуля-потока
    File->new->other->thread object
    в тексте модуля есть закомментированная подсказка насчет synchronize

    я так понимаю что у вас каждый тред берет какой-то урл и по нему качает файл.
    поскольку я synchronize недолюбливаю, я делаю проще: при создании потока ему в качестве параметра передается тот самый УРЛ с которым он должен работать, так что потокам не нужно лезть в одно и то же место чтобы "взять себе задание".
    копайте в сторону прописывания своего Constructor Create