Здравствуйте, Хреннос, Вы писали:
Х>Здравствуйте, IgorKr, Вы писали:
IK>>Код:
IK>>IK>>record *r=new record();
IK>>int k=1;
IK>>while(k<StringGrid1->RowCount)
IK>>{
IK>> memcpy(r->n,StringGrid1->Cells[0][k].w_str(),sizeof(r->n));
IK>> memcpy(r->name,StringGrid1->Cells[1][k].w_str(),sizeof(r->name));
IK>> memcpy(r->s1,StringGrid1->Cells[2][k].w_str(),sizeof(r->s1));
IK>> memcpy(r->s2,StringGrid1->Cells[3][k].w_str(),sizeof(r->s2));
IK>> k++;
IK>> ...code...
IK>>}
IK>>
Х>Здесь прекрасна каждая строка.
IK>>Текст в r получается с нулями '\0' после каждого символа. Как скопировать без нулей ?
Х>Для начала следует понять, что именно вы копируете, куда именно вы копируете, каков размер копируемых данных, и вообще — нужно ли вам именно копировать, а не преобразовывать из одного формата в другой.
Х>Для начала:
Х>1. Строковые объекты в С++ лучше всего копировать не через memcpy, а через присваивание.
Х>2. sizeof(r->n) дает размер поля во время компиляции.
Х>3. w_str(), скорее всего, возвращает строку в Юникоде.
Как лучше присваивать UnicodeString в char ?