Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой функцией "подождать" пока отработает код?


Страницы:   1 2

Верный вопрос ©   (2004-11-21 19:48:00) 

Какой функцией "подождать" пока отработает код перед тем как начнет выполняться следующий код?


Piter   (2004-11-21 21:42:00) [21]

Верный вопрос   (21.11.04 20:15) [5]

у меня только один вопрос. Нафига использовать TStringList? Почему бы не хранить информацию в TListBox?

Хотя еще интересно что за секции... чего то ты намудрил


DesWind   (2004-11-21 20:27:00) [22]

Здесь должна хорошо подойти критическая секция модуль SyncObj если не ошибаюсь


Верный вопрос   (2004-11-21 20:26:00) [23]

Короче я пишу для одного сайта программу содержащую солюшены (прохождения) к играм. Игр дофига, прохождения бывают более чем на 200 страниц. Все это дело храню в одном файле таким образом :

============================
список игр
---------------
---название игры---
прохождение к ней
--=-=-=-=-=-=-=-=-=--
---название игры---
прохождение к ней
--=-=-=-=-=-=-=-=-=--
---название игры---
прохождение к ней
--=-=-=-=-=-=-=-=-=--
============================

Если быстро проходится по списку навигации, то стек переполняется.


Верный вопрос   (2004-11-21 20:15:00) [24]

У меня в TStringList загружается большое кол-во строк. А в ListBox загружается список навигации пл списку в TStringListе.
При кликании по элементу в ListBoxе в TStringListе происходит поиск нужной строки и переписывание данных из "сектора" (строки в TStringListе разделены на "сектора" разделителями Сектора бывают по 3-5 тыс строк) в Memo.
Так вот, если кликать по элементам ListBoxа, то все происходит прекрастно, а вот если пользователь использует для навигации кнопки Up Down то все начинает тормозить, а потом появляется сообщение - стек переполнен.
Предупреждая ответ типа : "Запретить реакцию на кнопки Up и Down" хочу сказать вот что. ListBox очень-очень долго грузит все элементы навигации потому что их слишком много, поэтому приходится держато его в другом TStringListе. А для того чтобы он не тормозил я придумал такую фишку - при загрузке я помещаю в него только 50 прервых элементов списка. Ну, короче вот :

//BaseItems - стринглист содержащий список навигации
//Label2.caption - номер элемента стоящего первым в листбоксе
//Label3.caption - номер элемента стоящего последним в листбоксе

i := strtoint(Label3.caption);

if i < 50 then exit;

if key = vk_down then
  begin
   if not (Label3.caption = inttostr(BaseItems.Count-1)) then
     begin
       ListBox1.Items.Delete(0);
       ListBox1.Items.Insert(50,BaseItems.Strings[strtoint(Label3.caption)+1]);
       Label3.caption := inttostr(strtoint(Label3.caption)+1);
       Label2.caption := inttostr(strtoint(Label2.caption)+1);
     end;
  end;

if key = vk_up then
  begin
   if not (Label2.caption = '0') then
     begin
       ListBox1.Items.Delete(ListBox1.Items.Count-1);
          ListBox1.Items.insert(0,BaseItems.Strings[strtoint(Label2.caption)-1]);
       Label3.caption := inttostr(strtoint(Label3.caption)-1);
       Label2.caption := inttostr(strtoint(Label2.caption)-1);
     end else exit;
  end;
end;


Надеюсь теперь стало хоть чуть яснее.


GuAV   (2004-11-21 20:11:00) [25]

Верный вопрос   (21.11.04 19:48)
Какой функцией "подождать" пока отработает код

Код чего ?

потока, процесса ? - WaitForSingleObject.

Чего то ещё ? - в орешник !


Piter   (2004-11-21 20:05:00) [26]

без примера не обойтись...


Frozzen   (2004-11-21 19:51:00) [27]

Такая ситуация может возникнуть при многопоточном приложении
можно использовать критические секции, семофоры или мьютексы


DrPass   (2004-11-21 19:50:00) [28]

Если речь идет об многопоточном приложении - то обычно WaitForSingleObject. Если об обычном, то в орешник


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо