Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/78: Рейтинг темы: голосов - 78, средняя оценка - 4.86
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Изучение основ FreeBasic в сравнении с PowerBasic

10.10.2022, 22:17. Показов 21974. Ответов 218

Студворк — интернет-сервис помощи студентам
Всем добра и мира!

К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а.

В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП.

Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е.

Буду очень благодарен за любую помощь.

Итак, первый возникший у меня вопрос.

Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки?
В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины.

Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения:

FreeBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TYPE Persons
    Name AS STRING
    Surname AS STRING
    Age AS BYTE = 35
END TYPE
 
DIM Vpersons AS Persons
 
Vpersons.Name="Richard"
Vpersons.Surname="Black"
 
? Vpersons.Name
? Vpersons.Surname
? Vpersons.Age
Sleep
PowerBasic
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#COMPILE EXE
#DIM ALL
 
TYPE Persons
  Name AS STRING*10       'если здесь написать "Name AS STRING", компилятор бастует
  Surname AS STRING*10   'если здесь написать "Surname AS STRING", компилятор бастует
  Age AS BYTE           'значение по умолчанию здесь присвоить не получится
END TYPE
 
FUNCTION PBMAIN () AS LONG
DIM Vpersons AS Persons
 
  Vpersons.Name="Richard"
  Vpersons.Surname="Black"
  Vpersons.Age = 35
 
  ? Vpersons.Name
  ? Vpersons.Surname
  ? Vpersons.Age
 
  SLEEP 5000    'если SLEEP без указания продолжительности, компилятор бастует
END FUNCTION
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2022, 22:17
Ответы с готовыми решениями:

Перегрузка методов (изучение основ)
Добрый день! Вот я добрался до перегрузки методов и быстренько накидал вот такой пример: using System; namespace...

Сколько в среднем часов уходит на изучение основ C++?
1) Если с нуля 2) Если после паскаля или чего то в этом духе

Групповое изучение программирование с основ без преподавателя
Суть: Студенты 3 курса Специальность: информационно вычислительная техника, после третьего курса "Аналитики" С с божьей...

218
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,668
Записей в блоге: 2
17.11.2022, 02:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Замабувараев Посмотреть сообщение
Упрощённо
Жесть! о..О
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.11.2022, 10:09
Цитата Сообщение от testuser2 Посмотреть сообщение
Жесть! о..О
Обычно код деклараций выносят в заголовочники. Я понимаю, что для вас код становится менее бейсиковым и превращается в нечитаемое месиво, если встретится хотя бы один #include.
Но можете глянуть как будет выглядеть с заголовочником (удалил некоторую проверку ошибок, она вроде как не нужна):
PureBasic
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
#include once "AddOne_client.bi"
 
' Инициализация среды COM обязательна, иначе не будет работать CoCreateInstance
CoInitialize(0)
 
' Наш объект
Dim pAddone As IAddone Ptr = Any ' Конструкция «= Any» означает, что нам не нужно инициализировать значение нулём потому что его всё равно перезапишет функция
 
' Создать объект и получить указатель на его таблицу функций IAddone
Dim hrCreate As HRESULT = CoCreateInstance( _
    @CLSID_ADDONE, _ /' Сюда передаётся CLSID класса '/
    NULL, _ /' Здесь то, о чём вам показ знать не нужно, пропускаем '/
    CLSCTX_INPROC_SERVER, _ /' '/
    @IID_IAddone, _ /' IID интерфейса, нам нужен IAddone '/
    @pAddone _ /' Функция создаст объект и запишет его адрес в эту переменную '/
)
' Обязательно проверяем результат создания объекта
If FAILED(hrCreate) Then
    Print "Не могу создать объект", Hex(hrCreate)
    ' Мы не можем вызывать функции объекта если он не создан, выходим с ошибкой
    End(1)
End If
 
' Подготовим всё для вызова функции из COM
 
Dim Value As Long = 20
' Все COM функции (методы) возвращают HRESULT
' а настоящее значение записывается по указателю последним параметром
' Result — это результат, как если бы было «Result = Addone(Value)»
Dim Result As Long = Any
IAddone_Addone(pAddone, Value, @Result)
 
Print "Результат IAddone.Addone", Result
 
' pAddone нам больше не нужен, уничтожаем
' Необходимо зазубрить: делаем Release когда интерфейс больше не нужен
IAddone_Release(pAddone)
Итого значимых строк кода осталось примерно 4.

Заголовочник "AddOne_client.bi":
Кликните здесь для просмотра всего текста
PureBasic
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
#include once "windows.bi"
#include once "win\ole2.bi"
#include once "win\oaidl.bi"
 
Extern CLSID_ADDONE As Const CLSID
Extern IID_IAddone As Const IID
 
Type IAddone As IAddone_
 
Type IAddoneVtbl
    QueryInterface As Function(ByVal this As IAddone Ptr, ByVal riid As Const IID Const Ptr, ByVal ppvObject As any Ptr Ptr) As HRESULT
    AddRef As Function(ByVal this As IAddone Ptr) As ULONG
    Release As Function(ByVal this As IAddone Ptr) As ULONG
    GetTypeInfoCount As Function(ByVal this As IAddone Ptr, ByVal pctinfo As UINT Ptr) As HRESULT
    GetTypeInfo As Function(ByVal this As IAddone Ptr, ByVal iTInfo As UINT, ByVal lcid As LCID, ByVal ppTInfo As ITypeInfo Ptr Ptr) As HRESULT
    GetIDsOfNames As Function(ByVal this As IAddone Ptr, ByVal riid As Const IID Const Ptr, ByVal rgszNames As LPOLESTR Ptr, ByVal cNames As UINT, ByVal lcid As LCID, ByVal rgDispId As DISPID Ptr) As HRESULT
    Invoke As Function(ByVal this As IAddone Ptr, ByVal dispIdMember As DISPID, ByVal riid As Const IID Const Ptr, ByVal lcid As LCID, ByVal wFlags As WORD, ByVal pDispParams As DISPPARAMS Ptr, ByVal pVarResult As VARIANT Ptr, ByVal pExcepInfo As EXCEPINFO Ptr, ByVal puArgErr As UINT Ptr) As HRESULT
    Addone As Function(ByVal this As IAddone Ptr, ByVal X As Long, ByVal pResult As Long Ptr)As HRESULT
end type
 
Type IAddone_
    lpVtbl As IAddoneVtbl Ptr
End Type
 
#define IAddone_QueryInterface(This, riid, ppvObject) (This)->lpVtbl->QueryInterface(This, riid, ppvObject)
#define IAddone_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAddone_Release(This) (This)->lpVtbl->Release(This)
#define IAddone_GetTypeInfoCount(This, pctinfo) (This)->lpVtbl->GetTypeInfoCount(This, pctinfo)
#define IAddone_GetTypeInfo(This, iTInfo, lcid, ppTInfo) (This)->lpVtbl->GetTypeInfo(This, iTInfo, lcid, ppTInfo)
#define IAddone_GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId) (This)->lpVtbl->GetIDsOfNames(This, riid, rgszNames, cNames, lcid, rgDispId)
#define IAddone_Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr) (This)->lpVtbl->Invoke(This, dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr)
#define IAddone_Addone(this, X, pResult) (this)->lpVtbl->Addone(this, X, pResult)
 
Dim CLSID_ADDONE As Const CLSID = Type(&h5C9FFA61, &hD322, &h4E9F, _
    {&h91, &h65, &h6E, &h0A, &hBD, &h3B, &hCB, &h5D} _
)
Dim IID_IAddone As Const IID = Type(&h196EE916, &h64E2, &h4CE3, _
    {&hA1, &hF9, &hE6, &h18, &hBE, &h50, &hFD, &hB9} _
)
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.11.2022, 13:04
Цитата Сообщение от Замабувараев Посмотреть сообщение
Пока все тут беснуются, набросал на скорую руку программу
Нет, беснуетесь именно вы! По вашему это нормально писать на winapi? Сейчас этим занимаются только отпетые мазохисты!
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.11.2022, 14:18
Цитата Сообщение от CoderHuligan Посмотреть сообщение
По вашему это нормально писать на winapi?
А как надо было? Как в 1964 году «вывод на распечать»?
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
17.11.2022, 14:28
Цитата Сообщение от CoderHuligan Посмотреть сообщение
По вашему это нормально писать на winapi?
А как нужно? Через кучу прослоек для получения информации которую можно "выудить" одним вызовом winapi функции?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Сейчас этим занимаются только отпетые мазохисты!
А раньше это были не мазохисты? Мб программы раньше другие были? Или мб прогаммисты были какие-то плохие раньше? Я не понимаю почему именно "сейчас"?
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.11.2022, 14:48  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Упрощённо как‐то так:
Ну будем считать, что работает

Хотя из порядка 15 попыток запуска у меня удачно сработала только одна, но это уже мои косяки.
Четыре редактора, да кроме того ещё и по две версии каждого из них (х32 и х64). Итого 8 вариантов. Да плюс ещё и настройки в каждом из них различаются.
Ну вот и перебирал их все последовательно.
В большинстве попыток получал сообщение "Не могу создать объект". Но один раз всё-таки высветился желаемый результат, а именно "21". Ну то есть код всё-таки работает и это уже мои проблемы, что я пока ещё не справляюсь с этой четвёркой лошадей

Самое интересное, что я теперь даже не могу вспомнить, в каком именно из этих редакторов и при каких именно настройках получил тот самый единственный правильный результат

Ну ничего, со временем приноровлюсь как-нибудь.

И ещё в вашем коде после каждого PRINT добавлял SLEEP 5000, чтобы консоль не исчезала мгновенно.
А иначе бы и не увидел сообщение "Не могу создать объект".
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.11.2022, 15:06
Цитата Сообщение от Замабувараев Посмотреть сообщение
Как в 1964 году «вывод на распечать»?
Цитата Сообщение от The trick Посмотреть сообщение
А как нужно? Через кучу прослоек для получения информации которую можно "выудить" одним вызовом winapi функции?
Каким "одним"? Вы, прежде чем вызвать вашу "одну" функцию сделаете сто телодвижений похожих на танец краковяк. Куча прослоек как бы компилируется в те же api.
Цитата Сообщение от The trick Посмотреть сообщение
Я не понимаю почему именно "сейчас"?
Потому что сейчас существует не "тысяча" прослоек, а всего одна - та, которая изолирует программиста от низкоуровневого и не переносимого кода. Зачем использовать вот это, когда есть туева куча библиотек. Да в тех же c# это делается легко и элегантно.
То есть вы просто тратите свое время в пустоту потому что завтра api изменятся, а прослойки останутся такими же. Поэтому писать надо на "прослойках ", чуть не написал - прокладках.)))
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
17.11.2022, 15:30
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Вы, прежде чем вызвать вашу "одну" функция сделаете сто телодвижений похожих на танец краковяк.
Никто этим не занимается. Вероятно кто использует прослойки этим занимается? Я как раз говорю про случай когда проще и быстрей вызвать 1 api.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Куча прослоек как бы компилируется в те же api.
Странно, когда я сказал одним вызовом api, а Вы говорите в те же api. Еще раз зачем мне вызывать несколько api, если я могу вызвать 1? Прослойки делают кучу того что в большинстве случаев не нужно, выполняют лишнюю работу. Возьмем тот же VB6 у которого есть все эти классические Line/Circle и т.п. Каждая операция рисования делает столько не нужного, что использование GDI напрямую значительно повышает производительность.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Потому что сейчас существует не "тысяча" прослоек, а всего одна - та, которая изолирует программиста от низкоуровневого и не переносимого кода. Зачем использовать вот это, когда есть туева куча библиотек.
Про 1000 прослоек не понял что имеется в виду. И постойте, никто не говорит что использование библиотек - зло. Это Вы говорите что winapi юзают мазохисты. На самом деле winapi юзают и на шарпе и на бейсике, и в юзермоде, а в ядре так и подавно. Зачем использовать кучу библиотек, раздувать код, если можно быстрее, проще и эффективнее решить на winapi? К примеру, хочу я написать утилиту для просмотра ROT в Windows, для чего мне использовать QT и т.п. гигантские фреймворки когда я могу визуально создать диалоговое окно в редакторе, потом импортировать/отобразить его одной winapi функцией, несколькими функциями получить список COM объектов, и парой функций отобразить это в окне. Уверен что юзая эти фреймворки мне так или иначе придется юзать какие-то winapi в любом случае.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
17.11.2022, 15:49
Цитата Сообщение от The trick Посмотреть сообщение
К примеру, хочу я написать утилиту для просмотра ROT в Windows, для чего мне использовать QT и т.п.
Если код действительно специфичен для данной оси или требует работы напрямую с портами и пр, то да нужно юзать. Но если существует уровень, который отделяет программиста от особенностей конкретной ОС или от конкретных API, которые всегда специфичны для данной ОС, то необходимо использовать этот уровень абстракции, даже если он и замедляет работу кода на 10 паршивых процентов. Потому что единый уровень абстрагирования это универсальный способ задания того что требуется. И он останется даже если надо переносить код под другую платформу. Например та же библиотека TK, которую портировала туева куча скриптовых языков. Или графическая библа SDL, на которой написано много игр под виндовс и линукс. Это только отдельные примеры. И эти либы оттачивались десятилетиями тысячами программистов. Они создавали эти уровни абстрагирования от ОС не с проста.
Я же тоже win api изучал. И книжку Петзольда читал причем в подлиннике на английском. И периодически обращаюсь. Да, действительно: на api можно многое, но на нем вы не сможет сделать того, что можно сделать на вот этих обертках. Потому что они не только абстрагируют, но дают новые возможности.
0
17.11.2022, 16:02

Не по теме:

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Если код действительно специфичен для данной оси или требует работы напрямую с портами и пр
Если порты это железо (последовательный порт и т. д.) то они не специфичны для конкретной оси и возможна кроссплатформенность.

0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.11.2022, 16:11
Цитата Сообщение от Power_Basic Посмотреть сообщение
Четыре редактора, да кроме того ещё и по две версии каждого из них (х32 и х64).
Для 32‐бит:
Регистрируйте КОМ‐сервер от имени администратора в 32‐битной среде. Для этого нужно запустить 32‐битный интерпретатор команд (лежит примерно тут «C:\Windows\SysWow64\cmd.exe») (от имени администратора) и там ввести «regsvr32 путь-к-вашему-серверу.dll».
Компилировать фрибейсиковый код 32‐битным компилятором.
Цитата Сообщение от Power_Basic Посмотреть сообщение
добавлял SLEEP 5000
Не делайте так в нормальных программах, иначе у пользователя возникает ощущение, что программа зависла.

Добавлено через 2 минуты
Цитата Сообщение от Power_Basic Посмотреть сообщение
Четыре редактора, да кроме того ещё и по две версии каждого из них (х32 и х64)
Простые программы вроде этой можно делать в блокноте или Notepad++
Сделайте на рабочем столе ярлык к компилятору и просто перетаскивайте мышью файл исходного кода на этот ярлык.
Проще некуда.
2
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
17.11.2022, 17:20
Цитата Сообщение от CoderHuligan Посмотреть сообщение
он и замедляет работу кода на 10 паршивых процентов
Если бы все было так радужно, то и вопроса не возникало. А когда приложение показывает одно окошко с 1 листбоксом и тянет за собой 20 либ, то это не нормально.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Потому что единый уровень абстрагирования это универсальный способ задания того что требуется. И он останется даже если надо переносить код под другую платформу.
Про кроссплатформенность я вообще ничего не говорю. Я веду речь только под windows. Я уверен, что если в программе использовать что-то кроме каких то элементарных функций то тут все будет плачевно с кроссплатформенностью.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Да, действительно: на api можно многое, но на нем вы не сможет сделать того, что можно сделать на вот этих обертках. Потому что они не только абстрагируют, но дают новые возможности.
Ну это странно, учитывая что обертки сами юзают api.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.11.2022, 20:14  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Простые программы вроде этой можно делать в блокноте или Notepad++
Сделайте на рабочем столе ярлык к компилятору и просто перетаскивайте мышью файл исходного кода на этот ярлык.
Проще некуда.
Да, способ рабочий. Только я его немного усовершенствовал, чтобы, в случае чего, были видны сообщения компилятора о возможных ошибках:

Windows Batch file
1
2
D:\ProgsWithoutInstallation\FreeBasic\FreeBASIC-1.09.0-winlibs-gcc-9.3.0\fbc32.exe %1
pause
и

Windows Batch file
1
2
D:\ProgsWithoutInstallation\FreeBasic\FreeBASIC-1.09.0-winlibs-gcc-9.3.0\fbc64.exe %1
pause
Цитата Сообщение от Замабувараев Посмотреть сообщение
Цитата Сообщение от Power_Basic Посмотреть сообщение
добавлял SLEEP 5000
Не делайте так в нормальных программах, иначе у пользователя возникает ощущение, что программа зависла.
А я и есть один-единственный пользователь одного-единственного компьютера, для которого, собственно, и "сочиняется" вся эта "музыка"

Цитата Сообщение от Замабувараев Посмотреть сообщение
Компилировать фрибейсиковый код 32‐битным компилятором.
А почему, если компилировать под Х64, то не получается создать объект? Ексешник выдаёт именно такое сообщение.
Ведь главный смысл-то всего этого "мероприятия" это именно поиск способа использования 32-битного СОМ-сервера в 64-битном СОМ-клиенте. А под х32 я и в самом PowerBasic'е могу СОМ-сервер смастерить.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
17.11.2022, 20:43
Цитата Сообщение от Power_Basic Посмотреть сообщение
А почему, если компилировать под Х64, то не получается создать объект? Ексешник выдаёт именно такое сообщение.
Ведь главный смысл-то всего этого "мероприятия" это именно поиск способа использования 32-битного СОМ-сервера в 64-битном СОМ-клиенте. А под х32 я и в самом PowerBasic'е могу СОМ-сервер смастерить.
https://learn.microsoft.com/en... -surrogate
https://learn.microsoft.com/en... activation
Можно просто написать ActiveX-EXE сервер, либо создать объект и передать моникер в приложение к примеру через командную строку.
1
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
17.11.2022, 21:11  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
https://learn.microsoft.com/en... -surrogate
https://learn.microsoft.com/en... activation
Для меня это всё выглядит как-то слишком заумно
Суррогатные процессы... я терминов-то таких не слыхивал

Цитата Сообщение от The trick Посмотреть сообщение
Можно просто написать ActiveX-EXE сервер
Ну то есть будет запускаться как отдельное приложение? Out-of-process?
А как тогда использовать преимущества 64-битности?

Цитата Сообщение от The trick Посмотреть сообщение
либо создать объект и передать моникер в приложение к примеру через командную строку.
Сейчас как раз изучаю материалы по ООП (в Справке PowerBasic'а), связанные именно с СОМ-программированием. Раньше я всё что относится к СОМ решительно пропускал, потому что был уверен, что мне это никогда не понадобится
Про "моникер" как раз сегодня прочитал, что это "прозвище" и ещё что существует интерфейс IMonicer. Но дальше пока не дочитал
Да там даже во всей Справке вроде бы и не было про это в подробностях, насколько я помню. Просто вскользь упомянуто в самом начале.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
17.11.2022, 21:32
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну то есть будет запускаться как отдельное приложение? Out-of-process?
А как тогда использовать преимущества 64-битности?
Так если использовать DllSurrogate то он и так в отдельном процессе будет запущен. Без хитрых хаков невозможно загрузить DLL одной разрядности в роцесс другой разрядности. В COM просто создается объект как обычно, а система сама разруливает все IPC. Преимущества в том что к примеру на ЯП в котором нет 64 битного компилятора можно продолжать писать и использовать DLL в 64 битных приложениях.

Цитата Сообщение от Power_Basic Посмотреть сообщение
Сейчас как раз изучаю материалы по ООП (в Справке PowerBasic'а), связанные именно с СОМ-программированием. Раньше я всё что относится к СОМ решительно пропускал, потому что был уверен, что мне это никогда не понадобится
Про "моникер" как раз сегодня прочитал, что это "прозвище" и ещё что существует интерфейс IMonicer. Но дальше пока не дочитал
Да там даже во всей Справке вроде бы и не было про это в подробностях, насколько я помню. Просто вскользь упомянуто в самом начале.
У меня есть примеры, но только на VB6 и С.
2
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
18.11.2022, 14:44  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Преимущества в том что к примеру на ЯП в котором нет 64 битного компилятора можно продолжать писать и использовать DLL в 64 битных приложениях.
А будет ли у этих DLL доступ к невидимой части памяти?


Цитата Сообщение от The trick Посмотреть сообщение
Без хитрых хаков невозможно загрузить DLL одной разрядности в процесс другой разрядности.
Одним словом, от пляски с бубном устанут и руки, и ноги

Такие трудозатраты могут быть оправданы, только если станет возможным "упаковывать" в DLL-СОМ-сервер огромные куски кода. В идеале, целиком всю программу. И опять же если появится доступ к невидимой части памяти.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
18.11.2022, 17:34
Цитата Сообщение от Power_Basic Посмотреть сообщение
Такие трудозатраты могут быть оправданы
Оправдано, если у вас уже есть готовое приложение, портирование которого на x64 уйдёт много времени.
Новые программы следует писать сразу с учётом 64‐бит.
Помните, что чем дольше у вас не будет полноценного 64-битного варианта, тем больше сложностей будет возникать с поддержкой 32‐битного приложения, устанавливаемого на 64-битные версии Windows.
1
1401 / 860 / 92
Регистрация: 08.02.2017
Сообщений: 3,668
Записей в блоге: 2
19.11.2022, 10:40
Цитата Сообщение от Power_Basic Посмотреть сообщение
Такие трудозатраты могут быть оправданы, только если станет возможным "упаковывать" в DLL-СОМ-сервер огромные куски кода.
Или придумать какой-нибудь враппер, прокладку короче между x64 и x32, если конечно ткое возможно.
1
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
19.11.2022, 13:00
Цитата Сообщение от testuser2 Посмотреть сообщение
Или придумать какой-нибудь враппер, прокладку короче между x64 и x32, если конечно ткое возможно.
Так в чем COM не подходит? Вон из одного приложения просто вызываешь pObj.Meth и в другом происходит вызов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.11.2022, 13:00

Лабораторная работа на изучение основ работы с debug.exe
Ход работы 1. Запишите в отчет тему и цель. 2. В командной строке наберите debug. У вас должно появиться на экране окно отладчика с...

Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы)
Ребята, помогите с задачами, дали написать задачи на VBA (ни разу с ним не имел дела), первые 3 задачи делал на python'e может быть Вы...

Проблема с Imagelist в PowerBasic 10
Я хочу в ресурс вставить одно растровое изображение. Затем с помощью графических команд вырезать кусочки в память и добавлять их в...

FreeBASIC
Заметил, что уже имеющиеся на форуме темы в разделах: - QBasic - Visual Basic - VBA - Pure Basic посещаются довольно часто –...

Уйти с freebasic
написал кое как программу с openCL на freebasic там моделируется взfвимодействие частиц через потенциал парного взаимодейстивия ...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru