Может будет кому интересно в чём разница.
Ссылка по теме, где что взять, чтобы попробовать.
Логические ключевые слова почти одинаковы, типа While-Wend, If-EndIf и т.д. Операторы многие одинаковы, но вместо "&" (объединения строк) используется "+".
Также есть include
Встраивание файлов в исходник немного по-другому, используется секция Data. Там можно указать файл, а можно данные разного типа, например встроить иконку можно указав файл, а можно бинарные данные. Доступ к данным в этой секции по указателю.
Удобно работать с WinAPI, компилятор знает практически все функции WinAPI, константы и структуры. То есть не требуется ничего из этого объявлять или указывать инклуды, просто посмотреть на сайте microsoft тип параметров, какие есть константы и просто использовать.
Указатель и структуры
DllStructCreate - создать и DllStructGetData - получить данные, а в PureBasic их получать не надо, объявляется так p.POINT и далее доступ к элементам структуры p\x и p\y просто вставляются в таком виде и это тоже что DllStructGetData($p, 'x'). Ну POINT это известная структура, а свои надо конечно задать, но там вид как в С++ даже понятней, так как столбиком, а не в строку.
Указатель DllStructGetPtr($p, 'x') записывается как @p\x просто "собака" перед переменной.
ByRef - передать элемент в функцию как ссылка. В PureBasic в точке вызова используется @p, то есть взятие указателя, но чтобы работать с данными как с переменной надо создать структуру строки и передать указатель на структуру, а в функции принять как указатель на структуру, потом пользоваться как элементом структуры p\s
ObjCreate('Scripting.Dictionary') - помогает создать словарь или в PureBasic используется Map.
Массив в PureBasic с круглыми скобками Array1(3), но я использую List практически всегда, так как в цикле не нужен индекс, а если и редких случаях нужен, то у List тоже есть выбор элемента по индексу SelectElement. Кстати, как сделать создать объект ObjCreate я не в курсе.
В любом случае надо привыкать к синтаксису
Если раньше создавал массив данных, где в колонках есть числа, строки и они связаны, то в PureBasic ввиду типизации невозможно в массиве разные типы элементов. Создаёшь структуру и создаёшь массив структур, или точнее я использую список структур, где доступ List()\s или List()\name где List() это имя списка, а "s" или "name" это поле структуры. В итоге получается тоже самое, только именные поля структур, более понятней к чему ты обращаешься.
Есть сортировка SortArray, SortList и также сортировка списка структур SortStructuredList, SortStructuredArray (типа сортировка 2D массива).
Ошибки выводятся в консоль, а редакторе строка помечается красным. Практически все ошибки определяются автоматически, но скомпилировав с ошибкой (с явной ошибкой не скомпилирует) программа падает ничего не выдавая, если ошибка не выявилась при компиляции (не ошибка кода, а при некой операции получили указатель на который нет доступа). Но есть библиотека, которая выводит ошибку в сообщение как AutoIt3, но надо учесть эта библиотека встраивает паразитный код который проверяет выполнение каждой строки а значит и работать будет медленнее. Это полезно на этапе тестирования, а я использовал при работе с плагом, который тестировать можно было только скомпилированным.
Ссылка по теме, где что взять, чтобы попробовать.
Логические ключевые слова почти одинаковы, типа While-Wend, If-EndIf и т.д. Операторы многие одинаковы, но вместо "&" (объединения строк) используется "+".
Также есть include
Встраивание файлов в исходник немного по-другому, используется секция Data. Там можно указать файл, а можно данные разного типа, например встроить иконку можно указав файл, а можно бинарные данные. Доступ к данным в этой секции по указателю.
Удобно работать с WinAPI, компилятор знает практически все функции WinAPI, константы и структуры. То есть не требуется ничего из этого объявлять или указывать инклуды, просто посмотреть на сайте microsoft тип параметров, какие есть константы и просто использовать.
Указатель и структуры
DllStructCreate - создать и DllStructGetData - получить данные, а в PureBasic их получать не надо, объявляется так p.POINT и далее доступ к элементам структуры p\x и p\y просто вставляются в таком виде и это тоже что DllStructGetData($p, 'x'). Ну POINT это известная структура, а свои надо конечно задать, но там вид как в С++ даже понятней, так как столбиком, а не в строку.
Указатель DllStructGetPtr($p, 'x') записывается как @p\x просто "собака" перед переменной.
ByRef - передать элемент в функцию как ссылка. В PureBasic в точке вызова используется @p, то есть взятие указателя, но чтобы работать с данными как с переменной надо создать структуру строки и передать указатель на структуру, а в функции принять как указатель на структуру, потом пользоваться как элементом структуры p\s
ObjCreate('Scripting.Dictionary') - помогает создать словарь или в PureBasic используется Map.
Массив в PureBasic с круглыми скобками Array1(3), но я использую List практически всегда, так как в цикле не нужен индекс, а если и редких случаях нужен, то у List тоже есть выбор элемента по индексу SelectElement. Кстати, как сделать создать объект ObjCreate я не в курсе.
В любом случае надо привыкать к синтаксису
Если раньше создавал массив данных, где в колонках есть числа, строки и они связаны, то в PureBasic ввиду типизации невозможно в массиве разные типы элементов. Создаёшь структуру и создаёшь массив структур, или точнее я использую список структур, где доступ List()\s или List()\name где List() это имя списка, а "s" или "name" это поле структуры. В итоге получается тоже самое, только именные поля структур, более понятней к чему ты обращаешься.
Есть сортировка SortArray, SortList и также сортировка списка структур SortStructuredList, SortStructuredArray (типа сортировка 2D массива).
Ошибки выводятся в консоль, а редакторе строка помечается красным. Практически все ошибки определяются автоматически, но скомпилировав с ошибкой (с явной ошибкой не скомпилирует) программа падает ничего не выдавая, если ошибка не выявилась при компиляции (не ошибка кода, а при некой операции получили указатель на который нет доступа). Но есть библиотека, которая выводит ошибку в сообщение как AutoIt3, но надо учесть эта библиотека встраивает паразитный код который проверяет выполнение каждой строки а значит и работать будет медленнее. Это полезно на этапе тестирования, а я использовал при работе с плагом, который тестировать можно было только скомпилированным.
Последнее редактирование: