PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Непрерывный вывод информации


Непрерывный вывод информации

Сообщений 1 страница 9 из 9

1

Уф, на силу разобрался. Собственно код

Код:
; Непрерывный вывод данных v.4.51
Global count.l=0                                            ; просто переменная
Flags=#PB_Window_SystemMenu|#PB_Window_MinimizeGadget       ; флажок системных кнопочек на окне
OpenWindow(0, 300, 200, 400, 200, "Demo", Flags)            ; открываем окно
TextGadget(1, 10, 16, 100, 16,"", #PB_Text_Center|#PB_Text_Border)
Repeat                                                       ; начало цикла
  Event = WindowEvent()                                      ; измеряем событие в окне
  Gadget=EventGadget()                                       ;
  
      count+1                                                ; счетчик
      SetGadgetText(1, "Это надпись №"+Str(count))           ; тот самый гаджет
  Debug Event                                                ; подсматриваем, что происходит в окне
  Delay(100)                                                 ; пауза
  Until Event = #PB_Event_CloseWindow                        ; завершаем если close

1-я ошибка была. Выводил информацию в TextGadget. Заменил на SetGadgetText.
2-я ошибка WaitWindowEvent. Код отрабатывал 22 цикла и останавливался в ожидании события в окне.
3-е вроде бы работает, но первые 22 цикла курсор принимает вид колесика, будто программа, что то ждет.
Как бы зависает, но работает. Это так должно быть или это ошибка? :huh:

0

2

kettle написал(а):

Delay(100)

Убрать из цикла. Из-за задержки вовремя не будут обрабатываться события. Как результат получится

kettle написал(а):

Как бы зависает, но работает.

Нужно использовать таймер.

Код:
; Непрерывный вывод данных v.4.51
Global count.l=0                                            ; просто переменная
Flags=#PB_Window_SystemMenu|#PB_Window_MinimizeGadget       ; флажок системных кнопочек на окне
OpenWindow(0, 300, 200, 400, 200, "Demo", Flags)            ; открываем окно
TextGadget(1, 10, 16, 180, 16,"", #PB_Text_Center|#PB_Text_Border)

AddWindowTimer(0, 123, 100) ; добавление к окну 0 таймера 123 с периодом 100 мс.

Repeat                                                       ; начало цикла
  Event = WaitWindowEvent()                                  ; измеряем событие в окне
  Gadget=EventGadget()                                       ;
  
  If Event = #PB_Event_Timer And EventTimer() = 123
    count+1                                                ; счетчик
    SetGadgetText(1, "Это надпись №"+Str(count))           ; тот самый гаджет
  EndIf

  Debug Event                                            ; подсматриваем, что происходит в окне
Until Event = #PB_Event_CloseWindow                      ; завершаем если close

0

3

Хм, спасибо 8-) .
Интересно, а таймер на Random влиять не будет? Random ведь, как то связан с таймером?
Собственно пока так.

Код:
; Непрерывный вывод данных v.4.51
Global count.l=0                                            ; просто переменная
Global ind.l=0
Flags=#PB_Window_SystemMenu|#PB_Window_MinimizeGadget       ; флажок системных кнопочек на окне
OpenWindow(0, 300, 200, 400, 200, "Demo", Flags)            ; открываем окно
LoadFont(0, "Arial", 16)
SetGadgetFont(#PB_Default, FontID(0))
TextGadget(0, 10, 16, 200, 32,"", #PB_Text_Center|#PB_Text_Border)
AddWindowTimer(0, 123, 100)                                 ; добавление к окну 0 таймера 123 с периодом 100 мс.
Repeat                                                       ; начало цикла
  Event = WindowEvent()                                      ; измеряем событие в окне
  Gadget=EventGadget()                                       ;
  
  If Event = #PB_Event_Timer And EventTimer() = 123          ; событие в таймере
  index = Random(1)                                          ; генерируем индекс
  If index=0                                                 ; взвешиваем
    count-1
  EndIf
  If index = 1                                               ; взвешиваем
    count+1
    EndIf
    SetGadgetText(0, "Отношение "+Str(count))                  ; итог
     EndIf
  Debug Event                                                ; подсматриваем, что происходит в окне

  Until Event = #PB_Event_CloseWindow                        ; завершаем если close

Хочется попробовать заполнять пару банок 1-ми и 0-ми, какая первая заполнится ту и заносить в индекс.
Может быть рандом рандомнее станет. Да и вариант изучить массивы. Нужны будут еще графики.
А возможно на PB создать водопад? Такое знаете, как в SDR приемниках отображение частотного пространства.
Водопад бы пригодился и на будущее.

0

4

kettle написал(а):

А возможно на PB создать водопад?

Нарисовать можно все https://www.purebasic.com/documentation … index.html
https://www.purebasic.com/documentation … index.html
https://www.purebasic.com/documentation … adget.html

0

5

Спасибо, буду разбираться 8-) .

0

6

Простите, а как сделать что бы SetGadgetText(#Gadget, Text$) не удалял существующую в нем информацию,
а добавлял символы в строчку. Если заранее неизвестны номер столбца и номер строки. Просто продолжал
печатать дальше. Такое возможно? 8-)
PS Дебагер же не может в строчку вы водить инфо? А мне бы, как то оценить происходящее в целом :unsure:

Отредактировано kettle (05.10.2021 18:32:15)

0

7

kettle написал(а):

как сделать что бы SetGadgetText(#Gadget, Text$) не удалял существующую в нем информацию,а добавлял символы в строчку.

Нужно прочитать текст и добавить новый.

Код:
SetGadgetText(#Gadget, GetGadgetText(#Gadget) + Text$)

0

8

Ах вот значит, как. Действительно работает. Спасибо 8-)

0

9

kettle написал(а):

PS Дебагер же не может в строчку вы водить инфо?

может в строку, может столбиком
как создашь строку для него, так он и выведит, набирать только долго и муторно
вот из старой проги выдрал, выводит пять параметров
pb=пробелу, так набирать меньше

Код:
Debug "1* "+ds\im1+pb+ds\iw3+pb+ds\ih3+pb+ds\ix3+pb+ds\iy3

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Непрерывный вывод информации