Как передать строку из потока в форму?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by good_man, 24 Sep 2010.

  1. good_man

    good_man New Member

    Joined:
    24 May 2010
    Messages:
    112
    Likes Received:
    3
    Reputations:
    -2
    Доброго времени суток тру кодеры!

    В общем сидел задавал вопросы гуглу по теме синхронизации ит.п. Наткнулся тут на такой вот пример:

    Code:
    class TThread1 : public TThread
    {
    ...
    private:
      void __fastcall ForSynchroUpdate();//объявление метода, в котором будем обращаться к компонентам формы "основного" потока
    ...
    };
     
     
    void __fastcall TThread1::Execute()
    {
      while(!Terminated)
      {
         if(...)//случилось что0то такое, что требует изменения свойств компонентов
         {
             Synchronize(ForSynchroUpdate);//"синхронизованный" вызов метода ForSynchroUpdate
         }
         ...
      }
    }
     
    void __fastcall TThread1::ForSynchroUpdate()
    {//доступ к свойствам компонентов осуществляем только в методе TThread1, вызванном
      //с помощью Synchronize
      Form1->Memo1->Lines->Add("aaaaaaaaa");  
      Form1->Edit1->Text="bbbbbb";
      Form1->Panel1->Visible=true;
      //для передачи той "инфы", о которой говорилось, можно объявить два String'a: члены TForm1
      //и передавать эту инфу здесь.
      Form1->String1="cccccccccc";
      Form1->String2="cccccccccc";
    }
    
    в общем немогу понять что нужно в форме прописать чтобы передать String из потока. подскажите пожалуйста. оч интересно.

    вопрос касается только: Form1->String2="cccccccccc";

    вот. заранее большое прибольшое спасибо! :)
     
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    В классе форме надо соответственно прописать паблик поля:
    String1, String2: string;

    ПС Тупить такая синхронизация у тебя будет неимоверно
     
  3. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    ИМХО гуи с потоком надо синхронизовать при помощи WM_USER.А переменные с данными или глобальные или ссылку на них в поток передавать.
     
  4. good_man

    good_man New Member

    Joined:
    24 May 2010
    Messages:
    112
    Likes Received:
    3
    Reputations:
    -2
    ну мне как бы только интересно про передачу строки из потока(в моем случае из одного а не из 100500) на форму.

    можно поподробнее про:
    что то немогу сделать )
     
  5. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Это был пример на дельфи.
    На С++ точно не знаю, и билдера нету, но возможно что-то вроде
    public string String1;
    public string String2;
    (это в объявлении класса формы)
    Да и вообще непонятное выражение "передать в форму"

    Есть кстати более быcтрый способ передать строку - послать SendMessage, а в форме принимать обработчиком сообщения
     
    2 people like this.
  6. good_man

    good_man New Member

    Joined:
    24 May 2010
    Messages:
    112
    Likes Received:
    3
    Reputations:
    -2
    :D я долго думал как написать )) ничего подходящего не придумал )))

    да я видел такой пример(на форуме где ссыль в первои посте). тольк нелюблю лишний код даже если его мало)

    в общем спасибо GhostOnline, благодаря вам справился:

    public: String str;
     
  7. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    зачем вообще осваивать синхронизацию на таком высоком уровне классы формы брр.. понять в 100 раз сложнее из за всей этой абстракции
     
  8. good_man

    good_man New Member

    Joined:
    24 May 2010
    Messages:
    112
    Likes Received:
    3
    Reputations:
    -2
    не подскажете как еще бы запилить TStringList так же? )
     
  9. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    ну стоит полагать:
    PHP:
    public TStringList list;
    только про создание/уничтожение оъекта не забывай
     
  10. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    TStringList::Text
    TStringList::CommaText
     
    1 person likes this.