IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   трабла в Visual C++ (https://www.imho.ws/showthread.php?t=57148)

Комбинатор 23.04.2004 16:30

трабла в Visual C++
 
Есть две проги *.cpp написаные на VC++, они сто процентов работают.
почему например когда я запускаю допустим первую прогу, она работает всё нормально, потом, открываю вторую прогу, и иногда она показывает то что делала первая, а иногда она выдаёт две ошибки и не открывается, а если закрыть редактор и открыть заново то опять тоже первая работает а вторая нет
в чем тут трабла?

SapeR 23.04.2004 21:24

тексты прог - в студию !

Mind 23.04.2004 21:29

>>иногда она показывает то что делала первая
Eto console application chtoli?
p.s.
A ti zakrivaesh project 1 progi pered otkritiem 2 progi(File->Close Project)?

spike 24.04.2004 00:18

это имхо актуально для всех сред, в С++ Builder тоже есть такая беда

Комбинатор 24.04.2004 00:29

Цитата:

A ti zakrivaesh project 1 progi pered otkritiem 2 progi(File->Close Project)?
если закрывать то всё ок!

SapeR 24.04.2004 09:58

обе проги компилируют в одну и ту же точку одноимённые obj/exe/dll ?
тогда симптомы подходят

Комбинатор 24.04.2004 12:16

Но каждая прога в отдельной папке или это не имеет значения?

steelik 29.05.2004 15:15

Как в VC++ открыть текстовый файл и скопировать его содержимое в EditBox? Или в RichEdit.
Код:

void CMy5Dlg::OnButton1()
{
        CString stra;
        CFileDialog ldFile(TRUE);
        if(ldFile.DoModal() == IDOK){
        m_Edit1 = ldFile.GetFileName;
        UpdateData(FALSE);
        }
}


SapeR 30.05.2004 01:50

текст в окно
Код:

CWnd *pEdit = (CWnd *)GetDlgItem(IDC_EDIT1); // from resources
if (pEdit)
{
        pEdit->SetWindowText("12345");
}

чтение файла - fopen, fread / fgets / fscanf, fclose
или - CFile::Open , Read ,
или - CStudioFile

steelik 30.05.2004 11:19

Код:

FILE *fileopen;
CFileDialog ldFile(TRUE);
if(ldFile.DoModal() == IDOK){
if( (fileopen = fopen(ldFile.GetFileName,"r")) == NULL)
m_Edit1 = "The file was not opened";
else
m_Edit1 = "Opene";
UpdateData(FALSE);

Не работает, естественно. Не мог бы ты по одному примерчику на fopen, fread, fgets / fscanf , CFile, CStduioFile привести или где глянуть, заранее благодарен

alexey_ma 30.05.2004 12:50

Цитата:

steelik:
Как в VC++ открыть текстовый файл и скопировать его содержимое в EditBox?
Можно так :
Код:

CFileDialog ldFile(TRUE);
CStdioFile file;
CEdit* pEdit = (CEdit*) GetDlgItem(IDC_EDIT2); //ID твоего едита
if(ldFile.DoModal() == IDOK)
{               
        if(file.Open(ldFile.GetFileName(),CFile::typeText | CFile::modeRead ))
        {
                long lFileLength = file.GetLength();
                char* pBuffer = new char [lFileLength+1];
                file.Read(pBuffer,lFileLength);
                pEdit->SetWindowText(pBuffer);
                delete [] pBuffer;
                file.Close();
        }
}

A можно построчно, примерно так :
Код:

CFileDialog ldFile(TRUE);
CStdioFile file;
CEdit* pEdit = (CEdit*) GetDlgItem(IDC_EDIT2);
if(ldFile.DoModal() == IDOK)
{               
        if(file.Open(ldFile.GetFileName(),CFile::typeText | CFile::modeRead ))
        {
                CString strBuffer="";
                CString strTxt="";
                while(file.ReadString(strBuffer))
                {
                        strTxt+=strBuffer;
                        strTxt+="\n";
                }
                pEdit->SetWindowText(strTxt);                       
                file.Close();
        }
}

И поосторожнее, у CEdit по моему есть ограничение на размер текста (64К).
У RichEdit не знаю какое ограничение.

steelik 30.05.2004 18:20

Ребята! А зачем вы стваите указатель на EditBox?
Цитата:

CEdit* pEdit = (CEdit*) GetDlgItem(IDC_EDIT2); //ID твоего едита
Когда можно это сделать в Class Wizard -> Member Variables.. или я заблуждаюсь?

alexey_ma 30.05.2004 18:39

Запросто можно сделать как ты говоришь. Просто я обычно к эдиту привязываю переменную типа СString а если нужно работать с самим контролом то получаю указатель на него. Короче, делай как тебе удобно.


Часовой пояс GMT +4, время: 22:07.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.