Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Буилдер не переводит AnsiString в char *


Автор: frost 20.10.2003, 11:52
Есть кусочек такой:

#include <fstream.h>

void __fastcall Tfrm_main::btn_addClick(TObject *Sender)
{
ofstream OutFile("out.htm", ios::app);

if (!OutFile) //искл. тут не возникает

OutFile << "<br><br><u>" << ed_name->Text.c_str() << ":</u><br>" << endl;

int NLines = memo_text->Lines->Count;

for (int i = 0; i < NLines; ++i)
OutFile << memo_text->Lines->operator[](i).cstr() << "<br>";

OutFile << "<br>";

exit(0);
}

Он должен выводить в OutFile HTML-текст и заканчивать свою работу. Вместо этого он там где должны быть строки, выводит ничего и даже в цикле <br> не выводит. Я проверял - файл нормальный. И аппендится. Проведите среди меня разъяснительную работу, пожалуйста. Заранее спасибо.

Автор: Ars 20.10.2003, 12:00
Цитата
OutFile << memo_text->Lines->operator[](i).cstr() << "<br>";

Неверный вызов
Надо так:
Код
OutFile << memo_text->Lines->Strings[i].cstr() << "<br>";

Автор: frost 20.10.2003, 12:06
Всё равно. ed_name->Text выводит, а мемо не выводит.

Автор: Ars 20.10.2003, 12:25
Цитата
Всё равно. ed_name->Text выводит, а мемо не выводит.

Значит дело не в AnsiString, потому что и
ed_name->Text.c_str() и
memo_text->Lines->Strings[i].c_str() дают одинаковый результат - char*
Да, вот еще: у тебя написано operator[](i).cstr(), c_str() без подчеркивания. Если так и в коде, то мож из-за этого... Хотя непонятно, как тогда откомпилилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)