PowerBasic 9 vs VB6

Windows лучше чем Linux! Чем? Ясно же написано — чем Linux!
Раздуй свой холивар сегодня, потому что завтра это может сделать уже кто-то другой!
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

PowerBasic 9 vs VB6

Сообщение jangle » 10.02.2010 (Ср) 21:42

Дабы опровергнуть очередное безграмотное заявление Хакера
Предлагаю создать тему PowerBasic 9 vs VB6. Дабы пролить свет на достоинства и недостатки обоих языков в плане системного программирования.
Хотя конечно сравнивать уже мертвый VB6 и развивающийся PB некоректно, но все же...

PB кривой, потому что в его стринги не поместить ни юникод, ни 0-содержащую строку.


Откуда такие мысли? PB с 7 версии точно поддерживаются Unicode строки, а 0-содержащие строки с 1-версии. Типы Asciiz и String были всегда.

Теперь о ненормальности VB6 с хранением строк, дело в том, что VB хранит все строки в Unicode (даже если вы его об этом не просили), а перед передачей в DLL строка каждый раз перекодируется в Ansi, а при возвращении строки из DLL все соответсвенно происходит в обратном порядке.
Явный маразм. Куча бесмысленных строковых преобразований, потерянное процессорное время. И кстати именно поэтому, при вычислении длины строк в VB получается полная ахинея

В любом языке размер
Код: Выделить всё
ArrStr   (0 To 99999999)  As String * 4
будет равен
Код: Выделить всё
ArrByte  (0 To 399999996) As Byte

кто не верит - может посчитать результат на калькуляторе. :)

Код: Выделить всё
#Compile Exe
#Dim All
Function PBMain () As Long
    Dim ArrStr   (0 To 99999999)  As String * 4
    Dim ArrByte  (0 To 399999996) As Byte
    ArrStr(0)="x"
    ArrStr(99999999)="y"
    ArrByte(0)=1
    ArrByte(399999996)=255
    Print "Размер блока памяти в строковом массиве: " ;   VarPtr(ArrStr(99999999))-   VarPtr(ArrStr (0))
    Print "Размер блока в байтовом массиве:         " ;   VarPtr(ArrByte(399999996))- VarPtr(ArrByte(0))
    WaitKey$
End Function



Однако из того, что VB6 хранит строки в Unicode, в нем этот код работать не будет (в отличие от любой другой среды разработки)
2+2=5. Вот такие забавные грабли.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: PowerBasic 9 vs VB6

Сообщение Хакер » 10.02.2010 (Ср) 21:51

Нечем заняться?

Сказано уже: либо язык поддерживает строго один строковый тип, и он называется String. Либо он поддерживает более одного, и при этом ни один из них не называется String. То есть название полностью определяет способ хранениея строки. Их куча. Либо язык вообще не поддерживает строки.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Holy Wars@VBStreets

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList