BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...
jangle писал(а):BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...
А может не надо ООП?
Надо Федя, надо.
BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...
#COMPILE EXE
#DIM ALL
TYPE Methods
ShowObjectASCIIZ AS DWORD
MultiplyObjectDWORDbyTwo AS DWORD
END TYPE
TYPE Objects
dw AS DWORD
sz AS ASCIIZ *128
END TYPE
TYPE OOPClass
Method AS Methods
obj AS Objects
END TYPE
FUNCTION Foo1 (class1 AS OOPClass) AS LONG
? class1.obj.sz
END FUNCTION
FUNCTION Foo2 (class1 AS OOPClass) AS LONG
FUNCTION = class1.obj.dw * 2
END FUNCTION
MACRO Run (nClass, param, result)
CALL DWORD nClass USING Foo1(param) TO result
END MACRO
FUNCTION PBMAIN () AS LONG
LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
' init
MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
MyClass.obj.sz="I'm OOP string"
MyClass.obj.dw=&h12345678
'use
Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
? STR$(lRes)
END FUNCTION
jangle писал(а):А если серьезно, зачем в PB ООП? Ведь это очень красивый функциональный язык, зачем портить его и вносить инородные элементы?
PBDN писал(а):Нет пока что ни одного процессора в лоб понимающего ООП,
jangle писал(а):Кстати, насчет реализации ООП. Помнится в конце 2006 года, Боб Зейл грозился, что следующий 2007 год будет "революционным" в развитии PB. Скорее всего, таки введут в 9 версии ООП...
PBDN писал(а):BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...
PB есть конструктор - собери себе сам что хошь.
Нет пока что ни одного процессора в лоб понимающего ООП,
т.е. весь ООП спускаясь до машинных кодов опять превратится в старую добрую процедуру.
Ну а если так хочется сильно ООП то на ПБ можно организовать это самому, что то типа этого
- Код: Выделить всё
#COMPILE EXE
#DIM ALL
TYPE Methods
ShowObjectASCIIZ AS DWORD
MultiplyObjectDWORDbyTwo AS DWORD
END TYPE
TYPE Objects
dw AS DWORD
sz AS ASCIIZ *128
END TYPE
TYPE OOPClass
Method AS Methods
obj AS Objects
END TYPE
FUNCTION Foo1 (class1 AS OOPClass) AS LONG
? class1.obj.sz
END FUNCTION
FUNCTION Foo2 (class1 AS OOPClass) AS LONG
FUNCTION = class1.obj.dw * 2
END FUNCTION
MACRO Run (nClass, param, result)
CALL DWORD nClass USING Foo1(param) TO result
END MACRO
FUNCTION PBMAIN () AS LONG
LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
' init
MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
MyClass.obj.sz="I'm OOP string"
MyClass.obj.dw=&h12345678
'use
Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
? STR$(lRes)
END FUNCTION
Dark Machine писал(а):Есть вещи, которые действительно нужно добавить:
- Поддежка библиотек .LIB и объекных файлов .OBJ. Добавить линкер
Dark Machine писал(а): - Опкоды для SSExx, 3DKnow и т.д.
- Технология cоздания ActiveX .OCX и .DLL объектов (хоть и устарела, но всё же актуальна)
- Поддержка Linux. Вот это уж точно востребовано.
Dark Machine писал(а): - Прикрутить удобный IDE.
Dark Machine писал(а):Таким методом можно программу нехило закриптовать, запутать дебуггер...
Кстати никто не знает, CyRax полностью забросил его проект превращения ИДЕ в ВБ образный ? ИМХО очень неплохая задумка была.
hPBE или отдельный проект по IDE?
jangle писал(а):название уже не помню, но это был текстовый редктор написанный на VB
Dark Machine писал(а):PBDN писал(а):BION писал(а):Граждане, вы не в курсе, когда будет реализован ООП в PB?
Вообще, они там живы все, такой ведь язык хороший губят...
PB есть конструктор - собери себе сам что хошь.
Нет пока что ни одного процессора в лоб понимающего ООП,
т.е. весь ООП спускаясь до машинных кодов опять превратится в старую добрую процедуру.
Ну а если так хочется сильно ООП то на ПБ можно организовать это самому, что то типа этого
- Код: Выделить всё
#COMPILE EXE
#DIM ALL
TYPE Methods
ShowObjectASCIIZ AS DWORD
MultiplyObjectDWORDbyTwo AS DWORD
END TYPE
TYPE Objects
dw AS DWORD
sz AS ASCIIZ *128
END TYPE
TYPE OOPClass
Method AS Methods
obj AS Objects
END TYPE
FUNCTION Foo1 (class1 AS OOPClass) AS LONG
? class1.obj.sz
END FUNCTION
FUNCTION Foo2 (class1 AS OOPClass) AS LONG
FUNCTION = class1.obj.dw * 2
END FUNCTION
MACRO Run (nClass, param, result)
CALL DWORD nClass USING Foo1(param) TO result
END MACRO
FUNCTION PBMAIN () AS LONG
LOCAL MyClass AS OOPClass, lRes AS LONG, sRes AS STRING
' init
MyClass.Method.ShowObjectASCIIZ = CODEPTR(Foo1)
MyClass.Method.MultiplyObjectDWORDbyTwo = CODEPTR(Foo2)
MyClass.obj.sz="I'm OOP string"
MyClass.obj.dw=&h12345678
'use
Run (MyClass.Method.ShowObjectASCIIZ , MyClass, lRes)
Run (MyClass.Method.MultiplyObjectDWORDbyTwo , MyClass, lRes)
? STR$(lRes)
END FUNCTION
Таким методом можно программу нехило закриптовать, запутать дебуггер...
LOCAL a AS STRING, d AS BYTE PTR
a = SPACE$(7)
d = STRPTR(a)
! push 65
! push 66
! push 67
! push 68
! push 69
! push 70
! push 71
! mov cx, 7
! mov ebx, d
l:
! pop eax
! mov byte ptr [ebx], al
! inc bl
! loop l
? a
Просто я сейчас думаю над защитой от отладчиков и обфускация один из путей.
jangle писал(а):Все равно строка копируется в текстовую переменную, под отладчиком, она будет хорошо видна.
IsDebuggerPresent API ?
Сейчас этот форум просматривают: Yandex-бот и гости: 1