Как объявить строку фиксированной длины...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Как объявить строку фиксированной длины...

Сообщение tyomitch » 13.12.2004 (Пн) 15:08

...в TLB? Ведь VB может, значит как-то можно?
char Stroka [12345] переводится именно в Stroka(0 To 12344) As Byte, а хотелось бы получить аналог Stroka As String * 12345
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.12.2004 (Пн) 15:27

Гы :?

А если сделать просто класс, просто засунуть его в dll и просто декомпилировать tlb из оной? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 13.12.2004 (Пн) 16:02

Можно вопрос? А зачем? :)
Как ты собираешься из Char'ов (знаковый численный тип данных) строку фикс. размера делать? В ANSI C нет строк.. as String в VB - это же мухлежь, набор двухбайтовых целых чисел обозначающих коды Unicode :?:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.12.2004 (Пн) 16:41

GSerg писал(а):Гы :?

А если сделать просто класс, просто засунуть его в dll и просто декомпилировать tlb из оной? :)

Fixed-length strings and use of the ‘new’ qualifier are not allowed for fields in a public user defined type defined in an object module

This error has the following cause and solution:

Fixed-length strings and the use of the 'new' qualifier are not allowed for fields in a public user defined type defined in an object module.

:-(((((((
И как же теперь жить? CopyMemory для каждого обращения к этой строке? :-(

Кроме того, у этой ошибки "cause and solution" поразительно информативные.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.12.2004 (Пн) 16:49

xolod писал(а):Можно вопрос? А зачем? :)
Как ты собираешься из Char'ов (знаковый численный тип данных) строку фикс. размера делать? В ANSI C нет строк.. as String в VB - это же мухлежь, набор двухбайтовых целых чисел обозначающих коды Unicode :?:

Не вижу, при чём здесь ANSI C, и даже вообще какой бы то ни было C.
В VB я могу сделать UDT с фиксированной строкой-членом, а в TLB не могу, в связи с чем и возникал вопрос.

Потом, As String и As String * x - это две большие разницы, может быть ты ещё и их спутал?
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 13.12.2004 (Пн) 17:17

А при том, что MIDL по синтаксису объявлений очень похож на ANSI C (MSVC прид. таких же стандартов).

ЗЫ: И в чем же ДВЕ БОЛЬШИЕ РАЗНИЦЫ между строками фиксированного размера и переменного? Поясни пожалуйста :roll:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.12.2004 (Пн) 17:51

As String занимает 4 байта, As String * x занимает 2x байт, вот и вся разница :-)

А, ну и ещё то, что As String объявить в TLB можно, а As String * x - нельзя :-(

А то, что синтаксис объявлений "похож" на Си, совершенно не вынуждает его придерживаться тех же стандартов. Там даже стандартные типы все другие. В общем, совершенно несвязанные вещи, и мне до сих пор непонятно, зачем ты его вспомнил. Всё равно, как если бы я задал вопрос про VB.net, а ты бы ответил про QBasic, сославшись на "очень похожий синтаксис" ;-)
Изображение


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: SemrushBot и гости: 31

    TopList  
cron