1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

Тема в разделе "С и С++", создана пользователем Psixo, 2 июл 2006.

  1. Psixo

    Psixo Member

    Репутация:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Вообщем следующая сиутация,на форме расположенны три элемента 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
     
  2. zubr

    zubr Гость

    Репутация:
    0
    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;
     
  3. 62316e

    62316e Гость

    Репутация:
    0
    Код:
    	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;
     
  4. Psixo

    Psixo Member

    Репутация:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Кажется понял свою ошибку,вместо того чтобы скопировать строку из едита я присвоил указатель. Забавно получилось,сильно отвык от С, вэб программинг порой зло. :)
     
Загрузка...
Похожие Темы - Проблемы переводом Ansistring
  1. euppi98
    Ответов:
    3
    Просмотров:
    118
  2. AgRuN
    Ответов:
    8
    Просмотров:
    151
  3. CHEATER
    Ответов:
    1
    Просмотров:
    143
  4. Define

    Проблема Проблемы с шеллом

    Define, 18 июн 2017, в разделе: Kali Linux
    Ответов:
    2
    Просмотров:
    225
  5. Oksy
    Ответов:
    37
    Просмотров:
    2.089

Поделиться этой страницей