Страница 7 из 7

Re: PureBasic

Добавлено: Чт май 29, 2014 20:10:07
kalobyte
на этот раз я решил переделать все по уму, а то достиг уже барьера тупости из-за простоты глобальных переменных
теперь я хочу работать со структурой данных, которая хранится в ини файле и должна быть доступна из разных мест

вот только синтаксис бейсика сносит крышу

вот пример

Код: Выделить всё

Define Point1.Point, Point2. Point
  *CurrentPoint.Point = @Point1  ; Pointer declaration, associated to a structure and initialized with Point1's address
  *CurrentPoint \x = 10          ; Assign value 10 to Point1\x
  *CurrentPoint.Point = @Point2  ; move to Point2's address
  *CurrentPoint \x = 20          ; Assign value 20 to Point2\x
  Debug Point1\x
  Debug Point2\x
Define Point1.Point, Point2. Point вот эта строчка - этот point тип данных что ли?
тогда зачем звездочка? почему нельзя было сделать типа point1, point2.*
или зачем тогда звездочка *CurrentPoint ?

потом дальше зачем звездочка в *CurrentPoint.Point и через точку опять тип данных?
что за странный камент Pointer declaration, associated to a structure and initialized with Point1's address
а что за структура тут вообще? нигде же не было structure - endstructure

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

напишите мне, как декларировать функцию и передать в нее указатель на структуру config
как потом написать ее и инициализировать внутреннюю переменную myini типа config

у меня мозги уже не варят

Re: PureBasic

Добавлено: Чт май 29, 2014 23:11:06
Мурик
kalobyte писал(а):Define Point1.Point, Point2. Point вот эта строчка - этот point тип данных что ли?
Это структура из WinAPI винды. http://www.vsokovikov.narod.ru/New_MSDN ... _point.htm
kalobyte писал(а):тогда зачем звездочка?
Ну как, указатель на структуру же. При этом память под структуру не выделяется.
kalobyte писал(а):а что за структура тут вообще? нигде же не было structure - endstructure
Откроете окно "Просмотр структур" из меню "Инструменты" и посмотрите сколько структур объявлено по умолчанию. Среди них есть и POINT.
kalobyte писал(а):напишите мне, как декларировать функцию и передать в нее указатель на структуру configкак потом написать ее и инициализировать внутреннюю переменную myini типа config
Пример отсюда. http://pure-basic.narod.ru/docs/point.html

Код: Выделить всё

Structure Proba
   x.l
   y.l
   Text.s
EndStructure

test.Proba

Procedure Test(*var.Proba)
  *var\x=1
  *var\y=2
  *var\Text="Текст"
EndProcedure

Test(@test) ; Вызываем процедуру и передаём ей указатель на структуру
; Отображаем в отладочном окне данные из структуры
Debug test\x
Debug test\y
Debug test\Text

Re: PureBasic

Добавлено: Пт май 30, 2014 21:51:31
kalobyte
:facepalm: спутал point с pointer
а что с доступом к членам структуры через указатель?
*var\y=2 это типа var->x = 2 ?

Re: PureBasic

Добавлено: Вс авг 31, 2014 12:14:56
DeSex
Всегда был неравнодушен к Бейсику. Нахожусь на стадии выбора системы программирования для изучения и применения. С месяц назад открыл для себя PureBasic. Привлек меня тем, что это, во-первых, Бейсик! Во-вторых - проект может состоять всего из одного файла. Сама система программирования легко ставится на комп, ну и другие мелочи. Наверное, это то, что мне надо. К сожалению, справка только на английском. Есть переводы учебников, но они в основном только элементарные вещи охватывают. Сейчас разбираюсь с графикой. Нужна помощь по использованию SetFrameRate(). Объясните, как будет работать следующий кусок кода (схематично опишу). Зададим какое-либо значение:

SetFrameRate(60)
Начало цикла
FlipBuffers()
ClearScreen(RGB(0,255,255))
выводим спрайт
увеличиваем его координату на 1
DisplayTransparentSprite(...)
Конец цикла

Варианты работы:

1) делается первый проход цикла за мизерное время (гораздо меньше 1/60)
начинается второй проход
FlipBuffers должен вывести спрайт на экран, но поскольку время еще не подошло, ждем в этом месте пока истекут 1/60 с, затем продолжаем
выводим спрайт в позиции х+1
...

2) делается первый проход цикла за мизерное время (гораздо меньше 1/60)
начинается второй проход
FlipBuffers должен вывести спрайт на экран, но поскольку время еще не подошло, то спрайт не выводим, а переходим к следующей команде
увеличиваем координату на 1
переходим к третьему проходу
...
по истечении 1/60 с выводим спрайт, но уже не в позиции х+1, в позиции х+k (k- число проходов цикла за 1/60 с)

Или вообще какой-то третий вариант выполнения будет?

Re: PureBasic

Добавлено: Чт сен 04, 2014 14:38:25
Мурик
Напишите

Код: Выделить всё

SetFrameRate(60)
Начало цикла
 x=ElapsedMilliseconds()
 FlipBuffers() 
 Debug ElapsedMilliseconds()-x
 ClearScreen(RGB(0,255,255)) 
 выводим спрайт
 увеличиваем его координату на 1
 DisplayTransparentSprite(...) 
Конец цикла
И посмотрите каков будет результат в зависимости от параметра в SetFrameRate.

Re: PureBasic

Добавлено: Чт сен 04, 2014 19:44:54
DeSex
Спасибо большое, Мурик!
Не зря я сюда зашел, на спецфоруме так никто и не ответил мне, до сих пор вопрос висит.

Проверил. Чем больше значение, тем меньше выводимое значение. Значит, программа работает по первому варианту, ждет, пока истечет заданное время.
Еще раз спасибо.

Re: PureBasic для PC

Добавлено: Сб фев 27, 2016 09:43:52
Rostik01
Для начинающих на PureBasic предлагаю собранную мною информацию в интернете и оформленную в в виде PDF, (есть и DOCX).
Может кому либо пригодится, доступно на ссылке https://yadi.sk/i/_Sr4TlTrjzCyf.
Rostik

Re: PureBasic для PC

Добавлено: Пн фев 29, 2016 01:54:30
Rtmip
Спасибо, а в DOCX где можно посмотреть?