Shura |
Отправлено: 21.04.2004, 09:57 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
Столкнулся с такой проблемой:
при вводе текста в таблицу с помощью кода
CODE |
selection->set_Text(wcText);
|
в ячейке появляется нужный текст, а за ним еще некоторое количество мусора. Такое ощущение, что функция не видит конца строки. (строка как и положена заканчивается '\0')
Подскажите, как исправить! |
|
Gedeon |
Отправлено: 21.04.2004, 10:38 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Количество мусора одинаковое или все время разное?
|
|
Shura |
Отправлено: 21.04.2004, 12:38 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
количество мусора зависит от размера wcText !!!!
и вообще аномалии:
если wcText ини циализировать как
wchar_t wcText[50];
то вообще ничего не выводится, если
wchar_t *wcText=new wchar_t[50];
то выводится текст + мосор до самого 50-го символа! Т.е. Количество мусора зависит от размера массива!
Если длина текста==длине массива, то все равно добавляется 5 символов мусора. |
|
Doga |
Отправлено: 21.04.2004, 13:10 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
И в первом и во втором варианте ты только выделяешь память для текстового буфера. Естественно там будет мусор.
Используй функцию API:
CODE | VOID ZeroMemory(
PVOID Destination, // address of block to fill with zeros
DWORD Length // size, in bytes, of block to fill with zeros
); |
для очистки содержимого вуфера перед его заполнением текстом.
А кстати, как ты заполняешь буфер текстом?
|
|
Gedeon |
Отправлено: 21.04.2004, 13:20 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Попробуйте вместо wchar_t использовать тип variant. Если не поможет и мусор не исчезнет, если до конца последнего элемента массива, который выделен, ну и командуй клиенту сделать количество BackSpace = разнице между длиной массива и количеством вставляемых символов.
|
|
Valdemar |
Отправлено: 21.04.2004, 13:29 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Я для ввода текста в таблицу использовал примерно такой код
CODE | WideString str;
TablePtr table;
table=WordDoc->Tables->Item(1);
table->Cell(row,col)->Range->InsertAfter(str); |
и никакого мусора не добавлялось. Попробуйте и вы так же сделать. |
|
Shura |
Отправлено: 21.04.2004, 15:34 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
Doga
Память, естественно, очищаю. Заполняю ф-цией String::WideChar(...)
Gedeon
А что потом с Variant'ом делать? Он в функцию не лезет :-)
А как можно добавить BackSpace'ов?
Valdemar
Такой вариант тоже не прокатывает — всё равно мусор :-( |
|
Gedeon |
Отправлено: 22.04.2004, 09:25 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Этот исходник дома лежит, завтра принесу, выложу пример.
|
|
Shura |
Отправлено: 23.04.2004, 13:51 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
QUOTE (Gedeon @ 22/04/2004, 10:27) | Этот исходник дома лежит, завтра принесу, выложу пример. |
Спасибо! А то у меня сроки сдачи поджимают! |
|
Gedeon |
Отправлено: 27.04.2004, 08:53 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Блин, забыл, завтра.
|
|