Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблема с отображением текста в CStatic

13K
14 мая 2006 года
AxNe0
14 / / 07.05.2006
Всем привет! Имеется проблема :)
Функция
Код:
char * o_file(char *filename)
{
char *result="";
FILE *f;
f = fopen(filename, "r");
if (f!= 0 )
{
char ch;
fseek(f, 0, SEEK_SET);
while (!feof(f) && ch != '\n' &&  ch != '\r')
{
ch = fgetc(f);
if ( ch != '\n' &&  ch != '\r' && !feof(f)) result+=ch;
};
return(result);
}
else
{
AfxMessageBox("Error: File not found",MB_OK | MB_ICONSTOP,0);
return("Error: File not found");
};
fclose(f);
};

вызывается при создании CStatic:
 
Код:
CMainWnd::CMainWnd()
{
CRect rcwin(20,10,420,60), rcstat(30,10,110,70);
Create(NULL, "Test program" , WS_CAPTION  | WS_SYSMENU  | SBS_SIZEBOX,rcwin, NULL,NULL);
MyStatic = new CStatic();
if (MyStatic!=NULL) MyStatic->Create(o_file(filename),WS_CHILD|WS_VISIBLE|SS_CENTER, rcstat,this);
};

Но не работает так, как хотелось бы. Вместо латинских букв на CStatic появляется что-то вроде:

Как можно поправить ситуацию?
ЗЫ Большая просьба - ответы пояснять кодом, а код - по мере возможности, подробными пояснениями...
2.2K
14 мая 2006 года
REFOT
181 / / 08.04.2005
В данном случае идёт просто смещение по памяти
в строчке result+=ch;
а не добавление нового символа.
Надо либо выделять память под текст заранее
например:
...
result = new char[n];
...
result = ch;
...
либо пользоваться классами для работы с текстом, например вот так:) :

Код:
CString o_file(char *filename)
{
    CString result="";
    FILE *f = fopen(filename, "r");
    if(f!=0){
        char ch;
        fseek(f,0,SEEK_SET);
        do{
            ch = fgetc(f);
            if(ch != '\n' &&  ch != '\r' && !feof(f))
               result+=ch;
        }
        while(!feof(f) && ch != '\n' &&  ch != '\r');
        return result;
    }
    else {
        AfxMessageBox("Error: File not found",MB_OK | MB_ICONSTOP,0);
        return("Error: File not found");
    }
    fclose(f);
};
13K
15 мая 2006 года
AxNe0
14 / / 07.05.2006
Спасибо огромное!!! Понял и исправил - все работает! :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог