Проблемы с переводом Ansistring в Char

  • Автор темы Автор темы Psixo
  • Дата начала Дата начала
P

Psixo

Вообщем следующая сиутация,на форме расположенны три элемента Edit1, RichEdit1, Button1, при клике на кнопку выполняется следующий код

Код:
int i,j;

int string_len = Edit1->Text.Length();
char *string = new char[string_len];
memset(string, 0, string_len);
string = Edit1->Text.c_str();				 


RichEdit1->Lines->Add( AnsiString(string));
RichEdit1->Lines->Add(string);

delete string;

В итоге получается такой результат,при в воде до четырех символов в RichEdit отображается все корректно,но при вводе 4 символо вылезает артефакт,дли примера:
Ввел в Edit1: weew
Получил в RichEdit1: weew(здесь квадратик)

В чем прикол,иногда он вылазиет иногда нет 50/50
Компилю в BuilderC++ 5
 
1. Если твой указатель string должен указывать на Edit1->Text.c_str(), зачем вообще выделять под него динамическую память. Получается в каком то месте выделяется память, которая нигде не используется. Сделай тогда так:
Код:
char *string =NULL;
string = Edit1->Text.c_str();

RichEdit1->Lines->Add( AnsiString(string));
RichEdit1->Lines->Add(string);
2. Можно сделать так:
Код:
int string_len = Edit1->Text.Length()+1;
char *string = new char[string_len];
ZeroMemory(string, string_len);
strcpy(string, Edit1->Text.c_str());

RichEdit1->Lines->Add( AnsiString(string));
RichEdit1->Lines->Add(string);

delete string;
 
Код:
	char *cp = new char[Edit1->Text.Length() +1];
strcpy( cp, Edit1->Text.c_str() );


RichEdit1->Lines->Add( AnsiString(Edit1->Text));
RichEdit1->Lines->Add(cp);

delete [] cp; delete cp; cp = NULL;
 
Кажется понял свою ошибку,вместо того чтобы скопировать строку из едита я присвоил указатель. Забавно получилось,сильно отвык от С, вэб программинг порой зло. :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab