Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка сохранения текста в CRichEditView, Иногда работает, иногда нет 
V
    Опции темы
Avariya
Дата 6.5.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Здравствуйте, и опять у меня возник к вам вопрос:
Загружаю, сохраняю файл *.cpp типа. Заметил, что если загружаю файл сохраненный Visual'ом все работает коректно. Но если пытаюсь загрузить файл ранее сохраненный мной через эту же программу загружает, наверное, только первый символ.
Посмотрите пожалуйста в чем может быть ошибка:
Код

void CwithCRichEditDoc::OnFileOpen()
{
    // TODO: Add your command handler code here
    CRichEditCtrl &REC = GetView()->GetRichEditCtrl();
    char *temp, *buf;//сюда берем текст с файла
    temp = new char[1];
    CString PathString;
    CFileDialog fOpenDlg(TRUE, _T("Source"), _T("*.cpp"), OFN_FILEMUSTEXIST, _T("*.cpp"));//диалог открытия файла
    fOpenDlg.m_pOFN->lpstrTitle=_T("Open source file");//меняем титл диалога
    fOpenDlg.DoModal();//запускаем диалог
    PathString=fOpenDlg.GetPathName();//получаем путь
    CFile source;//а это наш файлик с кодом
    source.Open(PathString, CFile::modeRead | CFile::shareExclusive);//открываем файл
    buf = new char[source.GetLength()];//ну понятно
    source.Read(buf,1);//читаем оттуда по символу
    int i=1;
    for (;i<source.GetLength();i++)
    {
        source.Read(temp,1);
        buf[i]=*&temp[0];
    }
    buf[i]='\0';
    REC.SetWindowText(CComBSTR(buf));
    source.Close();
}

void CwithCRichEditDoc::OnFileSave()
{
    // TODO: Add your command handler code here
    CRichEditCtrl &REC = GetView()->GetRichEditCtrl();
    CString PathString;
    CFileDialog fOpenDlg(FALSE, _T("Source"), _T("Untitled.cpp"), OFN_FILEMUSTEXIST, _T("*.cpp"));//диалог открытия файла
    fOpenDlg.m_pOFN->lpstrTitle=_T("Save source file");//меняем титл диалога
    fOpenDlg.DoModal();//запускаем диалог
    PathString=fOpenDlg.GetPathName();//получаем путь
    CFile source;//а это наш файлик с кодом
    CFileStatus status;
    if (CFile::GetStatus(PathString, status))
        source.Open(PathString, CFile::modeWrite);
    else
        source.Open(PathString, CFile::modeCreate|CFile::modeWrite);
        //открываем файл
    CString Text;
    REC.GetWindowText(Text);
    int i = Text.GetLength();
    source.Write(Text,Text.GetLength()*2);//пишем
    source.Close();
}


Вспомнил, у меня при функции source.Write пишет ровно половину символов, приходится писать source.Write(Text,Text.GetLength()*2) это нормально? или может ктото знает как исправить?

И на последок, может ктото видел функцию с помощью которой можно разукрасить код(ну, подсветка синтаксиса) в CRichEditCtrl.

Спасибо за внимание.
PM MAIL   Вверх
Earnest
Дата 6.5.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Avariya @  6.5.2010,  13:50 Найти цитируемый пост)
приходится писать source.Write(Text,Text.GetLength()*2) это нормально? 

Нормально, если source - это файл, а Text - Unicode (т.е. проект в Юникод). В файл пишутся байты, и указывать нужно их количество.

Первый трабл тоже скорее всего связан с Юникодом.


--------------------
...
PM   Вверх
Avariya
Дата 6.5.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Цитата(Earnest @  6.5.2010,  17:44 Найти цитируемый пост)
Цитата(Avariya @  6.5.2010,  13:50 )
приходится писать source.Write(Text,Text.GetLength()*2) это нормально? 

Нормально, если source - это файл, а Text - Unicode (т.е. проект в Юникод). В файл пишутся байты, и указывать нужно их количество.

Первый трабл тоже скорее всего связан с Юникодом. 


Тогда сразу второй вопрос. При смене с Юникода на Мультибайт у меня компилятор выдает:
Error    1    general error c101008a: Failed to save the updated manifest to the file ".\Debug\withCRichEdit.exe.embed.manifest". 0@0<5B@ 7040= =525@=>.    mt.exe
С этим както можно бороться?

А еще у меня неработает CFile::typeText выдает какойто рантайт еррор :(
PM MAIL   Вверх
Avariya
Дата 7.5.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Проблема решилась. Если проблема с апдейтом то надо просто сделать клир проект
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0938 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.