Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.00/1: Рейтинг темы: голосов - 1, средняя оценка - 4.00
 Аватар для Argus19
1442 / 459 / 78
Регистрация: 24.09.2017
Сообщений: 2,541
Записей в блоге: 24

Twin Basic

27.10.2024, 20:05. Показов 29780. Ответов 330
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Несмотря на то, что проект Twin Basic по словам авторов в заключительной стадии "бета", скачал и попробовал.
Непривычный интерфейс.
Открыл проект, созданный в IDE Visual Basic 6.0, скомпилировал и 32 и 64 разрядные версии. По объёму результирующего кода получилось больше. Может быть нет оптимизации кода.
Кто-нибудь из форумчан может что-то сказать об этой IDE ?
3
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2024, 20:05
Ответы с готовыми решениями:

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?

330
 Аватар для Argus19
1442 / 459 / 78
Регистрация: 24.09.2017
Сообщений: 2,541
Записей в блоге: 24
17.04.2025, 08:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от testuser2 Посмотреть сообщение
короче предлагать исправления (если конечно могут ))
Я писал на форуме в личку главному. Не работал AutoSize у Picture Box. Исправили.
1
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
21.04.2025, 13:29
Я тут группу создал, заходите если интересно ) https://www.cyberforum.ru/groups/117/
0
Вернулся
 Аватар для HackerVlad
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
24.04.2025, 15:01
Когда там выйдет уже версия 1.0 ТвинБейсик'а? Обещали в апреле же...
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
04.05.2025, 16:05
Запулил им идею сделать краткую нотацию, работающую также как VarPtr() типа &var или @var, не знаю зайдет, не )
Visual Basic
1
pVar = @Var
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
07.05.2025, 02:03
Я вот что заметил, такой код на TB и VB* выдаст разный результат. На TB будет 2 одинаковые строчки, на VB разные. Они сделали правильный возврат ссылочных типов внутри UDT!. Я, кстати, делал обращение по этому поводу раньше и на данный момент все мои обращения закрыты (кроме последнего)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Type tTest
    sVal As String
    l As Long
    i As Integer
End Type
 
Private Sub TestType()
    Dim tt As tTest, a&
    
    tt = GetTypeExempl(a)
    Debug.Print StrPtr(tt.sVal)
End Sub
 
Private Function GetTypeExempl(a&) As tTest
    With GetTypeExempl
        .sVal = "asdfass"
        Debug.Print StrPtr(.sVal)
    End With
End Function
Добавлено через 10 минут
Массивы тоже правильно передаются.
1
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
11.05.2025, 11:59
Закоммитил сегодня в fafalone's форк TBXLLUDF две демонстрационные ассинхронные xll-udf-фукнции по образцу, взятому отсюда. Все есть на Гитхабре. В одной из функций даже запускается поток, т.е. она многопоточная получается. Х.з. конечно, как эксель будет контролировать колличество выполняемых потоков (он же вроде бы должен), если на листе будет много таких функций, поскольку поток создается с помощью стандартной winapi функции CreateThread. Но это пример от Майкрософта и в общем-то работает. Там еще я достиг максимально автоматического управления памятью, благодаря возможностям бейсика, улучшил синтаксис вызываемых функций, в общем интересно было поразбираться со всем этим.

Добавлено через 6 минут
Для Notepad++ появился udl-файл конфигурации для синтаксиса TB (от sokinkeso) можно взять здесь . Установил его так:
Синтаксисы -> User Defined Language -> Задать свой синтаксис - > Импорт..
0
Эксперт по электронике
6876 / 3299 / 340
Регистрация: 28.10.2011
Сообщений: 12,951
Записей в блоге: 7
12.05.2025, 23:58
Смотрю на Win11 и версия x86 отсутствует, но есть ARM64. Отсюда вопрос, может ли Twin Basic компилировать для ARM64?
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
13.05.2025, 02:06
Цитата Сообщение от locm Посмотреть сообщение
может ли Twin Basic компилировать для ARM64?
Это есть у них в дорожной карте, но, наверное будет не скоро и только для платных подписчиков.
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
23.05.2025, 07:18
Лайвхак по сохранению настроек IDE TwinBasic. В TB есть отличная возможность менять настройки панелей, их размер, расположение и т.д., и можно эти настройки сохранять, но, если вы работаете под ограниченной учетной записью, то можете заметить, что каждый раз при запуске IDE применяются стандартные настройки панелей. Я отследил реестровые операции при смене "макета", получилось так:
Code
1
2
3
4
5
Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\VB and VBA Program Settings\twinBASIC_IDE\IDESettings]
"ACTIVE_PANEL_LAYOUT_NAME"="Layout4"
"LAYOUTv2"="{\"docked\":[],\"floating\":[]}"
Итак, если вы юзаете также ограниченную учетку, то вам нужно сохранить этот твик (вмпсто Layout4 подставить имя своего макета) и выполнить от администратора, после чего в разделе HKEY_CURRENT_USER\Software\VB and VBA Program Settings появится новый раздел. Дальше в настройках безопасности этого раздела добавить свою учетку, чтобы в дальнейшем любые настройки сохранялись при последующем запуске.
0
0 / 0 / 0
Регистрация: 15.08.2016
Сообщений: 18
30.05.2025, 10:25
Цитата Сообщение от Argus19 Посмотреть сообщение
У меня на Win10 запускается без проблем, зато не ставится SP6 для VB. Из-за чего и скачал TB.
А у меня SP6 установился на Win10. Причём ставил на две машины.

Добавлено через 1 час 0 минут
Цитата Сообщение от HackerVlad Посмотреть сообщение
да какой я нафиг хакер? максимум деньги в играх взламывал)
Ну тогда мы все хакеры)))
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
14.12.2025, 13:52
Давно не заходил на Твин, но вы только посмотрите что там появилось!
You can now place methods inside UDTs, as well as API declarations. With APIs, if the first parameter is named Me and is the same type as the UDT, it's treated as an implicit member call,

Visual Basic
1
2
3
4
5
6
Type HWND
   Value As LongPtr ' the raw HWND
   Public DeclareWide PtrSafe Function BringWindowToTop Lib "user32" (ByVal Me As HWND) As Long
End Type
...
myHwnd.BringWindowToTop()
There's also associated events, including a constructor and destructor that make it possible to create lightweight objects, like a
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C++ class;
 
    Type myType
        a As Long
    
        Private Sub Type_Initialize()
            ' NOTE: currently you can only access the UDT members using the "Me." prefix
        End Sub
        
        Private Sub Type_Assignment(ByVal RHS As Variant)    ' TIP: You can change the RHS type, and you can define multiple assignment functions
            ' NOTE: currently you can only access the UDT members using the "Me." prefix
        End Sub
        
        Private Function Type_Conversion() As Variant ' TIP: you can change the return type here, and you can define multiple conversion functions
            ' NOTE: currently you can only access the UDT members using the "Me." prefix
        End Function
        
        Private Function Type_DebugView() As String
            ' NOTE: currently you can only access the UDT members using the "Me." prefix
        End Function
        
        Private Sub Type_Terminate()
            ' NOTE: currently you can only access the UDT members using the "Me." prefix
        End Sub
    
    End Type
UDTs of these types are still stack allocated structs that can be used with standard Win32 APIs.
Добавлено через 2 минуты
Там появились классы-структуры как в С++!

Добавлено через 4 часа 55 минут
Вот это вот я считаю колоссальным шагом вперед в развитии языка. И я ждал когда Уэйн что-то такое сделает (я даже открывал дискуссию на гите по этой теме). Конечно там есть много другого, которое также ключевое и было большим шагом - делегаты, cdecl и т.д. Но есть еще пару моментов, которые меня лично раздражают в VB и если Уэйн их исправит в TB, то я уже смогу считать TB полность завершенной формой современного VB. Эти две вещи
1) Fun вместо Function. Почему, черт возьми есть Sub которое есть сокращение от Subprogramm и нет Fun, а есть Function, это бардак, диссонанс какой-то так если посудить.
2) Групповое обявление типа
Типа такого
Dim As Long: a, b, c

Добавлено через 7 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
Type_Initialize
Кстати оригинально, что было выбрано слово Type, такого нет нет наверное в других языках. И это хорошо отражает суть, когда ты видишь слово Type ты понимаешь, что это что-то такое более простое и легкое, а слово Class наоборот вызывает ассоциации с какой-то тяжелой и сложной абстракцией, со всякими наследованиями и пр. лабудой.
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
14.12.2025, 16:02
Цитата Сообщение от testuser2 Посмотреть сообщение
Кстати оригинально, что было выбрано слово Type
Ничего оригинального тут нет, всего лишь следование практикам появившимся в QBasic из косматых 1980 годов.
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
14.12.2025, 17:31
Цитата Сообщение от Замабувараев Посмотреть сообщение
практикам появившимся в QBasic из косматых 1980 годов.
Я имел в виду использование слова Type в реализации стандартных событий событий - именно этот момент, хотя я не смотрел, возможно у Free Basic это также. Но это выглядит абсолютно правильно, в плане сохранения преемственности с VB и даже более старыми бейсиками. Мне нравится когда сохраняется преемственность.

Добавлено через 1 час 15 минут
Я может очевидные вещи сейчас скажу, но мне просто надо высказться. Эти типы-классы такая чудесная вещь, ведь они позволяют создать классы обертки для любых даже самых примитивных типов при этом не заботясь об каких-то издержках и это позволяет реализовать всю мощь ООП на низком уровне.
Я вообще рассуждаю, как наверное и многие, что правильный язык, тот который реализует все возможности, которые есть в С++. Сам С++ как бы многим не очень нравится и считается сложным, но в то же время его возможности прям как эталон. И вот глядя на Тви-бейсик, можно сказать, что там уже очень дофига C++-ного реализовано в собственном TB-шном соусе, и это весьма плохо. Ну это как бы мое не профессиональное мнение, но поскольку профессионалы предпочитают воздерживаться от комментариев, в таком случае мене приходится делать такой комментарий, поскольку данный факт нельзя осталвлять незамеченным как бы.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
14.12.2025, 21:12
Цитата Сообщение от testuser2 Посмотреть сообщение
Type_Conversion
А как это работает? Ну т.е. там еще есть оператор приведения одного UDT к другому?
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
14.12.2025, 21:29
The trick, не знаю, скорее всего нет, я не проверял это все. В любом случае там можно поле одного типа, присвоить полю другого. А так конечно если было бы еще это то это было бы ое-ёй, совсем круто!
1
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
14.12.2025, 22:03
testuser2, Понял, спасибо. Думал ты используешь этот ЯП.
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
15.12.2025, 02:19
The trick, кстати, там же есть Type_Assignment и Type_Conversion это наверное и есть то

Добавлено через 7 минут
Type_DebugView, в принципе, по названию тоже понятно. Можно сделать класс Ansi-строк, допустим и в Type_DebugView возвращать строку в юинкоде, и в дебаггере будет отображаться нормальная строка.
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
15.12.2025, 17:00
Все проверенно, работает, причем в "Locals" все отображается как надо, прям сказка
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    Private DeclareWide PtrSafe Function WideCharToMultiByte Lib "kernel32" ( _
            ByVal CodePage As Long, _
            ByVal dwFlags As Long, _
            ByVal lpWideCharStr As Any, _
            ByVal cchWideChar As Long, _
            ByVal lpMultiByteStr As Any, _
            ByVal cbMultiByte As Long, _
            ByVal lpDefaultChar As LongPtr, _
            ByVal lpUsedDefaultChar As LongPtr) As Long
    Private Declare Function SysAllocString Lib "oleaut32" ( _
            ByRef psz As Any) As String
 
    ' Константы для кодовых страниц
    Private Const CP_ACP As Long = 0 ' ANSI кодовая страница
    Private Const CP_UTF8 As Long = 65001 ' UTF-8 кодовая страница
 
    Type clLPCSTR
        lpStr As LongPtr
        
        Private Sub Type_Assignment(ByVal sInp As String)
            Dim bufsize As Long = Len(sInp) + 1
            If bufsize Then
                If Me.lpStr Then FreeMem Me.lpStr
                Me.lpStr = AllocMem(bufsize)
                If WideCharToMultiByte(CP_ACP, 0, sInp, -1, Me.lpStr, bufsize, _
                                        0, 0) Then Else FreeMem Me.lpStr
            End If
        End Sub
        Private Sub Type_Assignment(ByVal lpInp As LongPtr)
            Me.lpStr = lpInp
        End Sub
        Private Function Type_Conversion() As String
            Return SysAllocString(ByVal Me.lpStr)
        End Function
        Private Sub Type_Terminate()
            If Me.lpStr Then FreeMem Me.lpStr
        End Sub
        
        Private Function Type_DebugView() As String
            Return SysAllocString(ByVal Me.lpStr)
        End Function
    End Type
    
    Sub TestCppClass()
        Dim lpcs As clLPCSTR, s As String
        
        s = "Hellow World"
        
        lpcs = s
        
        Dim s2 As String = lpcs
        
        Debug.Print s       
        Debug.Print lpcs
        Debug.Print s2
    End Sub
Результат
Code
1
2
3
4
5
6
18:28:13.475
Hellow World
18:28:13.475
Hellow World
18:28:13.475
Hellow World
Добавлено через 3 часа 27 минут
С этими классами это уже просто иной уровень программирования, жаль такое нельзя в VBA внедрить
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
16.12.2025, 01:57
Это у них тоже классное нововведение
Package Server

Code can be grouped as a package, and published to an online server. You can have Private packages, visible only to you, or Public packages, visible to everyone.
Теперь, как я понял, можно клепать свои поделки и отправлять к ним на сервер.
0
1400 / 858 / 92
Регистрация: 08.02.2017
Сообщений: 3,642
Записей в блоге: 2
16.12.2025, 12:51
Кстати, если нажать стоп при отладке, Type_Terminate срабатывает, значит если будет какая-то ошибка и преждевременная остановка, класс все-равно может корректно завершиться и освободить все данные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2025, 12:51
Помогаю со студенческими работами здесь

Отличия версий Visual Basic 6.0 от Visual Basic 6.5?
У меня 3 вопроса: 1.Чем отличается версия Visual Basic 6.0 от Visual Basic 6.5? 2.Можно ли запустить проект созданный раннее в Visual...

что лучше MSI R6870 Twin Frozr II или MSI N570GTX Twin Frozr II/OC, 1.3Гб?
выбор между PCI-E 2.1 MSI R6870 Twin Frozr II, 1Гб, GDDR5, Ret и PCI-E 2.0 MSI N570GTX Twin Frozr II/OC, 1.3Гб, GDDR5, OC, Ret ...

не могу настроить twin frozr 3
подскажите!я в железе не очень!купил видюху twin frozr 3,говорят видушка достаточно мощная захотел протестить на игре кризис 2 на полных...

MSI N560GTX-Ti Twin Frozr II/OC
Столкнулся с такой проблемой, в игре начали появляться непонятные полосы, расплываться объекты (см. скриншоты), пока заметил такую проблему...

MSI GTX480 twin frozr
Всем привет, такая проблема- как обычно видеокарта не дает компу стартануть и бросает его в ребут по циклу, разобрал карту нашел скол на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
320
Ответ Создать тему
Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru