Некоторые особенности при работе с BSTRING и ASTRING #3

YF> А поподробнее про этот тип данных можно?  В частности, можно ли писать Use(Bstring)? Например, Use(Astring) в CW5 не работало, а в CW55 вроде работает….

Да про нее и писать-то особенно нечего!

Данный тип автоматически преобразует записанные в него данные согласно универсальной символьной таблице, когда на каждый символ выделяется два байта.

Т.е.,если делаем присвоение, например, BStr = ‘12345’, то в памяти эта строка будет храниться как ‘1<0>2<0>3<0>4<0>5<0>’. Национальные символы будут преобразованы в соответствующие им двухбайтовые последовательности. Для программы это все делается прозрачно. Этот тип позволяет нормально работать с API-функциями, которые в качестве строковых параметров требуют строки такого формата. Раньше для этого приходилось формировать такие строки вручную.

В отличии от ASTRING, выделенная память для BSTRING никак Кларионом не учитывается. Это обстоятельство, кстати, уменьшает накладные расходы памяти для BSTRING до 4 байт, которые стоят непосредственно перед строкой и содержат длину данной строки (с учетом 2байта/символ).

А что касается USE, я так и не понял, что у тебя не работало в C5? У меня в тестовом примере на C5eeb нормально работает окно с двумя строковыми полями для ввода — ASTRING и BSTRING.