Dateiendung nachträglich ändern
-
Hi,
vielleicht könnt ihr mir helfen:
ich habe vergessen beim erstellen des mfc progamms gleich zu beginn die dateiendung festzulegen, welche bei "datei öffnen/speichern" ausgewählt sein soll.
wie kann ich diese im nachhinein noch auf zb "txt" ändern/einstellen?vielen Dank
-
Im Ordner Quellcodedateien hast Du eine Datei namens DeinName.rc (bei mir Tag 10.rc)
Hier ist ein EintragSTRINGTABLE PRELOAD DISCARDABLE BEGIN IDR_MAINFRAME "Tag 10\n\nTag10\nDateityp Tag10 (*.dhc)\n.dhc\nTag10.Document\nTag10 Document" ENDÄndere hier (.dhc) in (.txt)
Das war´s
-
hmm ich finde zwar die Zeile, aber nicht den Eintrag.
Bei mir steht:STRINGTABLE PRELOAD DISCARDABLE BEGIN IDR_MAINFRAME "Kundenumsatz\n\nKunden\n\n\nKundenumsatz.Document\nKunden Document" IDD_DIAGRAMM "Diagramm zum Kunden anzeigen" ENDhabe auch das probiert:
STRINGTABLE PRELOAD DISCARDABLE BEGIN IDR_MAINFRAME "Kundenumsatz\n\nKunden\n\n\nKundenumsatz (*.txt)\nKunden Document" IDD_DIAGRAMM "Diagramm zum Kunden anzeigen" END.. keinen Erfolg.
Vielleicht hast Du noch eine Idee?
-
Hat keiner eine weitere Idee?
Oder geht sowas nicht?
-
Also ich weiß nich ab das hier dir was bringt, aber ich würd vielleicht einfach die funktion selbst schreiben....
CFileDialog f(false,"","",0,"Text-dateien|*.txt|\0",this); f.DoModal();MFG
Hansi
-
also das ist gar nicht so schlecht...
aber: wenn ich eine Funktion für onFileOpen einfüge ruft er den Speichern-Dialog auf ???
Und ich mußte this am ende rauslöschen da CFileDialog keine 6 Parameter aktzeptiert. Ohne dem gehts wie gesagt zum speichern.
Ich habe dann false auf true gesetzt und schon konnte ich öffnen, ABER das Prg öffnet nicht meine Datei die ich sonst ohne Problme einladen konnte.Vielleicht kannst Du mir da noch ein paar Tips geben.
Danke und der Ansatz ist schon supi.
Muß ich dann die Serielisierung auch dorthin verschieben oder aufrufen?edit: ahh bin ich blöd, ich glaube ich verstehe schon, natürlich muß ich
danach noch div. Sachen erledigen lassen...
Na mal sehen.THX für den Tip!
-
Komisch bei mir gehts gehts sowohl mit als auch ohne this. Naja is ja auch egal. Das das programm die datei nicht öffnet dürfte normal sein...
du musst den pfad, den du mitf.GetPathName()"weiterverarbeiten" z. B. mit WinExec() eine exe- datei ausführen oder so was ähnliches
MFG
Hansi
-
thx.
das laden habe ich ebend schon allein hin bekommen... *freu*
aber beim speichern bricht er ab, aber der compiler meldet keine fehler.
nun bin ich doch ein wenig ratlos.hier mal mein Code fürs laden (das geht) und speichern:
void CKundenumsatzDoc::OnFileOpen() { // TODO: Code für Befehlsbehandlungsroutine hier einfügen CString m_sResultat; CFileDialog dlg (true,NULL,NULL,NULL,"Textdateien(*.txt)|*.txt||"); dlg.DoModal(); m_sResultat = dlg.GetFileName(); CFile file; CFileException fe; if (file.Open(m_sResultat,CFile::typeBinary | CFile::modeRead, &fe)) { CArchive ar(&file, CArchive::load); Serialize(ar); CDaten obj; //"Hilfsvariable" benötigt, da man sonst nicht auf die Protected Variablen in CKunde.h zugreifen kann //Werte werden in Hilfsvariable gespeichert und dann per Object obj mit den Set Funktionen der einzelnen Variablen //in dem Object gespeichert int anz; ar >> anz; for(int i=0; i<anz;i++) { CString name; // temporäre Variable zum speichern der geladenen Variable ar >> name; // Wert von Datei in Temp-Var packen obj.SetName(name); // von Temp-Var in die protectet Varible int nummer; ar >> nummer; obj.SetNummer(nummer); float umsatz1; ar >> umsatz1; obj.SetUmsatz1(umsatz1); float umsatz2; ar >> umsatz2; obj.SetUmsatz2(umsatz2); float umsatz3; ar >> umsatz3; obj.SetUmsatz3(umsatz3); //Hier wird das Object mit einem kompletten Kunden als Inhalt in das Array geschrieben m_arrDaten.Add(obj); } } UpdateAllViews(NULL); } //-------------------------------------------------------------------------------------------------------------- void CKundenumsatzDoc::OnFileSaveAs() { // TODO: Code für Befehlsbehandlungsroutine hier einfügen CString m_sResultat; CFileDialog dlg (false,NULL,NULL,NULL,"Textdateien(*.txt)|*.txt||"); dlg.DoModal(); m_sResultat = dlg.GetFileName(); CFile file; CFileException fe; // file exists with read & write permissions CArchive ar(&file, CArchive::store); Serialize(ar); CDaten obj; // objekt ableiten von CDaten //Göße des Arrays holen mittels GetSize() int anz = m_arrDaten.GetSize(); //mittels Schleife die Kunden in der Datei speichern ar << anz; for(int i=0; i<anz; i++) { ar << m_arrDaten.GetAt(i).GetName(); // speichern der einzelnen Elemente eines Kunden ar << m_arrDaten.GetAt(i).GetNummer(); ar << m_arrDaten.GetAt(i).GetUmsatz1(); ar << m_arrDaten.GetAt(i).GetUmsatz2(); ar << m_arrDaten.GetAt(i).GetUmsatz3(); } }die Komentare sind für mich (da ich noch neuling bin) und ich habe sie jetzt nicht extra rausgelöscht
-
Also damit hab ich leider noch gar nicks gemacht. Tut mir leid.
Ich bin auch noch ziemlicher anfänger.MFG
Hansi
-
Versuch mal
IDR_MAINFRAME "Kundenumsatz\n\nKundenumsatz\nTextdatei (*.txt)\n.txt\nKundenumsatz.Document\nKundenumsatz Document"
-
DANKE DANKE,
funktioniert,ist ja echt genial!
@MOD: vielleicht kann man das ja in die FAQ aufnehmen
Gruß Radelt