Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » fies, muss textdatei mit CFiledialog laden und ausgeben können

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.02.2006, 01:08 Uhr
~Jasmin
Gast


Hallo!

Hoffe ihr könnt mir helfen (habe nix derartiges gefunden bisher). :/

Ich habe eine MFC mit SDI zur Anwendung.
Ich will einfach eine Textdatei über diesen CFileDialog auswählen, laden und anschließend im Fenster des Views anzeigen lassen.

Zur Anzeige des textes aus der datei bin ich auch gekommen, doch gibt er mir diesen ohne Formatierung (zeilenumbruch z.b.) und mit lauter füllzeichen aus. Das ist eklig, ich brauche die textausgabe wie sie ursprünglich in der datei auch war.


C++:
Meine OpenFile-Funktion in der DOC-Klasse:

    // TODO: Fügen Sie hier Ihren Befehlsbehandlungscode ein.
    static char BASED_CODE szFilter[]="Text Dateien (*.txt)|*.txt||";

    // Dialogfeld Datei öffnen (Bitmap)
    CFileDialog* ldText = new CFileDialog(TRUE, ".txt", m_pathText, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
    
    CString selectPath = "C:\\Temp";

    ldText->GetOFN().lpstrInitialDir = selectPath;

    if (ldText->DoModal() == IDOK)
    {
        // Dateiname ermitteln
        m_pathText = ldText->GetPathName();

        char str[1000];
        CFile textFile( m_pathText, CFile::modeRead );
        textFile.Read( str, sizeof(str));
        m_strText = str;
        textFile.Close();
    }

    //m_strText = "Hallo Welt!!";
    UpdateAllViews(NULL);
    delete ldText;


Anschließend habe ich eine selbst angelegte GetString-Methode um mir den inhalt der datei (m_strText) in der VIEW-Klasse ausgeben zu können:


C++:
OnDraw Methode in der VIEW-Klasse:

    CHuffTextDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen
    pDC->TextOut(10,30,pDoc->GetString());


So bekomme ich zwar den Inhalt der Datei angezeigt, aber alles in einer Zeile ohne Zeilenumbruch und mit dämlichen Füllzeichen "IIIIIIIII" ... *alles in die tonne hau*

Wie kann ich das beheben? Gibt es andere Techniken um den Inhalt einer textdatei korrekt anzeigen zu lassen?


Es geht um eine Aufgabe für die Schule.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.02.2006, 08:28 Uhr
Tommix



' Morgen,
lies die Zeilen lieber einzeln ein:

C++:
// Header:
CStringArray m_strText;

// OpenFile
// ...

if (ldText->DoModal() == IDOK)
{
    m_pathText = ldText->GetPathName();

    CStdioFile f(m_pathText, CFile::modeRead | CFile::typeText);
    CString line;
    m_strText.RemoveAll();

    while(f.ReadString(s))
        m_strText.Add(s);
}

//...

int CHuffTextDoc::GetSize() const
{
    return m_strText.GetSize();
}

CString CHuffTextDoc::GetString(nr) const
{
// Prüfung ob nr gültig kannst Du selbst einbauen
    return m_strText[nr];
}

// OnDraw
// ...
int lines = pDoc->GetSize();

for (int line = 0; line < lines; ++line)
    pDC->TextOut(10, 30+20*line /*oder so */, pDoc->GetString(line));
//...


(Alles ungetestet.)
Gruß, Tommix
 
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: