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

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

  1. Psixo

    Psixo Member

    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Вообщем следующая сиутация,на форме расположенны три элемента Edit1, RichEdit1, Button1, при клике на кнопку выполняется следующий код

    Код (Text):
    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 Гость

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

    RichEdit1->Lines->Add( AnsiString(string));
    RichEdit1->Lines->Add(string);
    2. Можно сделать так:
    Код (Text):
    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 Гость

    Код (Text):
        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

    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Кажется понял свою ошибку,вместо того чтобы скопировать строку из едита я присвоил указатель. Забавно получилось,сильно отвык от С, вэб программинг порой зло. :)
     
Загрузка...
Похожие Темы - Проблемы переводом Ansistring
  1. aliaksandr89
    Ответов:
    3
    Просмотров:
    123
  2. Amfion
    Ответов:
    5
    Просмотров:
    120
  3. wowa
    Ответов:
    7
    Просмотров:
    378
  4. John_Tavarez
    Ответов:
    0
    Просмотров:
    335
  5. Валентин Амбер
    Ответов:
    11
    Просмотров:
    344

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