Аналогия char в С++

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Аналогия char в С++

Сообщение #set » 29.04.2009 (Ср) 16:51

Господа на 6 басике писал оч. давно, а щас пишу на шарпе. И задача стоит перенести некоторую реализацию с исходника на С++ в старенькую программу на 6 басике.
В принципе со всем справился за исключением одной мелочи. Нужно посылать данные на COM порт. На С++ данные передаются ввиде массива char.

Код: Выделить всё
char NetAdrSet[17] = "0000000000000301";
strcpy(WriteCommand,"AT+GSN=");
strncat(WriteCommand, NetAdrSet,16);
strncat(WriteCommand, "\r",1);
fSuccess = WriteFile(hCom,WriteCommand,24,&BytesWritten,NULL);


на басике 6 типа данных char насколько я понимаю нет. Подходит только массив byte. И пока не знаю схавает Com порт данные в таком виде или нет. Думаю проблем не будет. Так вот как перевести строку "0000000000000301" в битовый массив? Спс.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Аналогия char в С++

Сообщение alibek » 29.04.2009 (Ср) 17:22

Если это хекс-дамп, то только вручную, в цикле. Если это строка, то просто присвоение. Если строка анси, а не юникод, то предварительно преобразовать StrConv.
Lasciate ogni speranza, voi ch'entrate.

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Re: Аналогия char в С++

Сообщение #set » 29.04.2009 (Ср) 18:25

alibek писал(а):Если это хекс-дамп, то только вручную, в цикле.


Я привел пример на С++ вверху. И там есть конкретно переменная.

alibek писал(а):Если это строка, то просто присвоение.


На прямое присвоение ругается

Код: Выделить всё
Dim s(16) As Byte
s = "0000000000000301"


говорит Can't assign to array

alibek писал(а):Если строка анси, а не юникод, то предварительно преобразовать StrConv.


кодировка по умолчанию. на шарпе это звучит Encoding.GetEncoding.Default; ))

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Аналогия char в С++

Сообщение Mikle » 29.04.2009 (Ср) 19:56

Код: Выделить всё
Dim s() As Byte
s = "0000000000000301"

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Re: Аналогия char в С++

Сообщение #set » 30.04.2009 (Чт) 9:11

Mikle писал(а):
Код: Выделить всё
Dim s() As Byte
s = "0000000000000301"


мдаа... вот это преобразования. Отвык я как-то от этого.
Попробовал на выходи получается массив почему то размером на 32 и байты конвертированные идут почему-то через нулевые.
Я конечно могу вручную создать новый массив нужной размерности и скопировать, но все же почему так?

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Аналогия char в С++

Сообщение arthur2 » 30.04.2009 (Чт) 10:16

это потому что строки в уникоде. Сделай так:
s=StrConv("0000000000000301",vbFromUnicode )
Артур
 
   

#set
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 05.10.2006 (Чт) 11:06

Re: Аналогия char в С++

Сообщение #set » 30.04.2009 (Чт) 13:51

Спасибо, все портировал, все работает.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 39

    TopList