Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Datei einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.05.2006, 13:39 Uhr
muck2000



Hallo,

lese mit folgender Funktion den Inhalt einer Datei ein:

C++:
void CDateiLesenDlg::OnLesen()
{
    CFileFind Find;
    
    char szPuffer[500];
    
    CFile myFile;
    CFileException fileException;

    
    BOOL bFind = Find.FindFile("D:\\GDT_I\\*.txt", 0);

    while(bFind)
    {
        bFind = Find.FindNextFile();

        m_sDateiName = Find.GetFileName();

        myFile.Open(m_sDateiName, CFile::modeReadWrite, &fileException);
                
        int i = myFile.GetLength();
        
        myFile.Read(szPuffer, sizeof (szPuffer));

        m_sInhalt = szPuffer;
        m_sTempInhalt = szPuffer;
        
        UpdateData(FALSE);
    }
}



Mein Problem:
Ich möchte meinen CString m_sInhalt nicht 500Byte gross haben, sondern nur i bytes.

Meine Löung wäre i merken, und im CString ein delete von 500 - i.
Ist ein bisschen umständlich, geht das nicht einfacher?

Gruss Sven
--
Nimm das Leben nicht so ernst, da es eine Sache ist aus der Du eh nicht lebend raus kommst!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.05.2006, 15:15 Uhr
ao

(Operator)



C++:
        int i = myFile.GetLength();

        char * pszPuffer = new char [i + 1];
        
        myFile.Read(pszPuffer, i);

        m_sInhalt = pszPuffer;

        delete [] pszPuffer;


Ungefähr so. Ohne Gewähr, da ungetestet.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.05.2006, 16:02 Uhr
mmc20
puss in boots


hi, wenn du doch sowieso in einen CString reinschreibst, wozu dann der puffer ?
und wozu soll das mit dem FileFind gut sein ? (jetzt mal nur wegen dem datei lesen)

C++:
void CDateiLesenDlg::OnLesen()
{
    CFile myFile;
    CString strLine="";

    if ( !myFile.Open( _T("D:\\GDT_I\\*.txt"), CFile::modeRead) ) {
        AfxMessageBox("fehler beim datei öffnen.", MB_ICONSTOP | MB_OK);
        return;
    }
    
    myFile.SeekToBegin();
    m_sInhalt = "";

    while ( myFile.ReadString(strLine) ) {
        m_sInhalt += strLine;
    }

    myFile.Close();
    return;
}


Dieser Post wurde am 26.05.2006 um 16:04 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.05.2006, 18:34 Uhr
muck2000



Hi,

habe es folgendermaßen gelöst:


C++:
CFileFind Find;
    
    CFile myFile;
    CFileException fileException;

    
    BOOL bFind = Find.FindFile("D:\\GDT_I\\*.txt", 0);

    while(bFind)
    {
        bFind = Find.FindNextFile();

        m_sDateiName = Find.GetFileName();

        myFile.Open(m_sDateiName, CFile::modeReadWrite, &fileException);

        myFile.Read(m_sInhalt.GetBufferSetLength( myFile.GetLength() ), myFile.GetLength() );

        m_sInhalt.ReleaseBuffer();
        
        UpdateData(FALSE);
    }



FindFile weil es sein kann dass mehrere Dateien in dem Ordner liegen, die dann nacheinander eigelesen und umgesetzt werden müssen.

Danke.

Gruss Sven
--
Nimm das Leben nicht so ernst, da es eine Sache ist aus der Du eh nicht lebend raus kommst!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: