powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / AnsiString и unsigned char*
25 сообщений из 29, страница 1 из 2
AnsiString и unsigned char*
    #33984987
Туго идет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такая. В Edit записывается фамилия (не превышает 16 символов). Необходимо фамилию запихнуть в unsigned char* Data [16], если в фамилии меньше 16 символов, то оставшиеся "ячейки" Data добить 0x00.
Написал так, но это не верно.....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
                edtData->Text = “Петров”;
                unsigned char* Data;
                Data = new char[ 16 ];
                AnsiString DataString = edtData->Text;
                unsigned char* ch;
                for (int SymbolCount =  0 ; SymbolCount <  16 ; SymbolCount++)
                {
                        if (SymbolCount <= DataString.Length())
                        {
                                ch = DataString.SubString(SymbolCount,SymbolCount +  1 ).c_str();
                                Data[SymbolCount] = *ch;
                        }
                        else
                                Data[SymbolCount] = 0x00;
                }


...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985011
Туго идет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или ещё такая ситуация:
На форме 6 Edit. В них записывается шестизначное число, допустим E7,AA,FF,F0,AF,ED. Требеуется их записать в Data

Код: plaintext
1.
unsigned char* Data;
Data = new char[ 6 ];

Типа:

unsigned char* Data;
Data = new char[6];

Код: plaintext
1.
2.
3.
4.
5.
Data[ 0 ] = 0x E7;
Data[ 1 ] = 0xAA;
Data[ 2 ] = 0xFF;
Data[ 3 ] = 0xF0;
Data[ 4 ] = 0xAF;
Data[ 5 ] = 0xED; 

Только значения из Edit->Text
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985026
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю (не первый топ)
что у явные проблемы с ансистрингом.
тогда нах он нужен.

не могу судить об остальном: нет описания,

Код: plaintext
 ch = DataString.SubString(SymbolCount,SymbolCount +  1 ).c_str();

но такое получение 1 символа не есть хорошо даже.

Код: plaintext
1.
2.
3.
4.
5.
6.
ch = DataString.c_str(); - я так понимаю этио получение указателя строки
strcpy( Data, ch );
for (int SymbolCount = DataString.Length(); SymbolCount <  16 ; SymbolCount++)
{
  Data[SymbolCount] =  0 ;
}
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985160
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
AnsiString sa="xdvkdfnldf";
char *sc=new char[ 16 ];
int L=sa.Length();
if (L< 16 )
{
    ZeroMemory(sc, 16 );
    strcpy(sc,sa.c_str());
}
else
{
    memcpy(sc,sa.c_str(), 16 );
}

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985169
Туго идет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, с первой частью я не без вашей помощи разобрался, вот теперь над второй мучаюсь.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985392
Туго идет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В СИ недавно.
Требовалось шестнадцатиричное число вида XX (например "AF"), записанное в шести Edit->Text "перенести" в unsigned char* Data = new char[6] .
Ну и наворотил я, хоть и работает )))))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
unsigned char* Data = new char[ 6 ];;
int FirstSymbol,SecondSymbol;
AnsiString Symbol1,Symbol2;
AnsiString HEX[ 16 ]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
TEdit *edtEdit;
for (int Key =  0 ; Key <  6 ; Key++)
{
        edtEdit = dynamic_cast<TEdit*>(frmMain->FindComponent("Edit" + IntToHex(Key+ 1 ,  1 )));
        Symbol1 =edtEdit->Text.SubString( 1 , 1 );
        Symbol2 =edtEdit->Text.SubString( 2 , 2 );
        for(int d= 0 ;d< 16 ;d++)
        {
                if (HEX[d]==Symbol1)    FirstSymbol = d;
                if (HEX[d]==Symbol2)    SecondSymbol = d;
        }
        Data[Key] = char(FirstSymbol* 16 +SecondSymbol);
}

подскажите как упростить
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985401
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinя так понимаю (не первый топ)
что у явные проблемы с ансистрингом.
тогда нах он нужен.ооп, ёптыть. Вот топик-близнец: http://sql.ru/forum/actualthread.aspx?tid=337303
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33985478
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всегда делай так. вот только 16 символов может не хватить для всех

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
String aa = "Череззабоногузадирищенко";
char szStroka[ 16 ] = { 0 }; // маленький размер
char szLastName[ 255 ] = { 0 }; // праивльный размер

strncpy( szStroka, aa.c_str(), sizeof(szStroka)- 1  ); // урежет правильно
strncpy( szLastName, aa.c_str(), sizeof(szLastName)- 1  ); // справа будут нули


и ничего добивать не придется
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987506
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, как точно задать вопрос, но попробую. Как сделать, чтобы указатель не ссылался на на какую область памяти?

Код: plaintext
unsigned char* charbuf = new char[ 48 ];
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987544
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
charbuf = NULL;
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987559
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полсе этого charbuf на будет ссылаться на какую область памяти.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987591
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoполсе этого charbuf на будет ссылаться на какую область памяти.
Значит я что-то недопонял. У меня на этом месте вылетает ошибка. Моя ситуация:
объявляю
Код: plaintext
1.
unsigned char* charbuf = new char[ 48 ];
Далее у меня цикл в три оборота, в цикле я делаю
Код: plaintext
charbuf = Null
А потом в новом цикле я делаю присвоение каждуму элементу массива charbuf.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987597
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в предыдущем вопросе опечатался
Код: plaintext
charbuf = NULL
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987732
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрозь
Далее у меня цикл в три оборота, в цикле я делаю
Код: plaintext
charbuf = Null
А потом в новом цикле я делаю присвоение каждуму элементу массива charbuf.

Сначала ты теряешь ссылку на массив, а потом по ней пытаешься в него что-то записать
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987774
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрозьв предыдущем вопросе опечатался
Код: plaintext
charbuf = NULL


если даже борланд из этого сделает
Код: plaintext
*charbuf = NULL
или
Код: plaintext
charbuf[ 0 ] = NULL
что и там и там есть первый указатель массива, то могу сказать, что плохо вы понимаете char* (наверное ансистринг за вас все до этого делал) а зря.
char* -самый быстрый способ обработки строк.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987806
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрозьДалее у меня цикл в три оборота, в цикле я делаю
Код: plaintext
charbuf = Null
А потом в новом цикле я делаю присвоение каждуму элементу массива charbuf.героин - зло.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987823
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрозьНе знаю, как точно задать вопрос, но попробую. Как сделать, чтобы указатель не ссылался на на какую область памяти?возможно, вопрос звучал так: как проинициализировать массив нулями?
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987838
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвозможно, вопрос звучал так: как проинициализировать массив нулями?что-то я не припомню, но не инициализируется ли массив нулями компилятором ?
ну т.е. пишем char massiv[100]={0}; и вуаля - нули везде ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987855
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас maXmoвозможно, вопрос звучал так: как проинициализировать массив нулями?что-то я не припомню, но не инициализируется ли массив нулями компилятором ?
ну т.е. пишем char massiv[100]={0}; и вуаля - нули везде ?
Posted via ActualForum NNTP Server 1.3
если массив статический.
а так - теряешь указатель.
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987859
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык вроде ж было new char[48];
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987864
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабасчто-то я не припомню, но не инициализируется ли массив нулями компилятором ?
ну т.е. пишем char massiv[100]={0}; и вуаля - нули везде ?

Дык это уже не С?
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987869
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Карабас Барабасчто-то я не припомню, но не инициализируется ли массив нулями компилятором ?
ну т.е. пишем char massiv[100]={0}; и вуаля - нули везде ?

Дык это уже не С?
си, даже анси си, но для статики
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987871
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhДык это уже не С?как это не С ? я другими языками не владею :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987872
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ранних редакциях с++ это был malloc (то есть треш), сейчас, может, calloc (нули).
...
Рейтинг: 0 / 0
AnsiString и unsigned char*
    #33987877
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это я про new
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / AnsiString и unsigned char*
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]