lempy Geschrieben 29. Juli 2014 Teilen Geschrieben 29. Juli 2014 Hallo Leute Habe schon mal ein solches Thema erstellt, ist aber schon länger her. Mein Problem ist, das ich eine Sicherungsdatei von einer anderen Datei beim Öffnen erstellen möchte. So soll Z. B. oder test.txt oder test.rtf test.bak werden. Habe es bis jetzt geschafft, dass ich die Endung .bak an die Datei angehängt bekomme, aber die Endung .txt oder .rtf bleibt erhalten. In meinem Code sind so einige Versuche auskommentiert, nur damit ihr so eine Ahnung habt in welche Richtungen ich meine Gehversuche gemacht habe. private: System::Void openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { String ^kopie; // den Namen setzen dateiname = openFileDialog1->FileName; /*kopie = openFileDialog1->FileName;*/ this->Text = dateiname; // die Datei laden richTextBox1->LoadFile(dateiname); /*kopie = dateiname;*/ /*kopie = openFileDialog1->FileName->Remove(openFileDialog1->FileName->Length - (gcnew FileInfo(openFileDialog1->FileName))->Extension->Length) + ".bak";*/ /* kopie = Path::Combine(Path::GetDirectoryName(dateiname), Path::GetFileNameWithoutExtension(dateiname) + L".BAK");*/ /* richTextBox1->SaveFile(dateiname->Replace('.rtf','.bak'));*/ richTextBox1->SaveFile(dateiname + ".bak"); // die Eigenschaft Modified zur Sicherheit auf false setzen richTextBox1->Modified = false; } Dabei wäre "Replace()" ja nach den Beschreibungen bei MSDN und den mir zur Verfügung stehenden Büchern die beste Lösung, aber ich habe keine Ahnung wie ich diese richtig einsetze. Außerdem soll eine schon bestehende .bak-Datei überschrieben werden. Das währe eine Boolsche-Anweisung. Nur wie füge ich diese ein? Das will ich aber erst nach dem Kopieren in angriff nehmen. Wie bekomme ich es hin, das ich die Endung meiner "Original Datei" von .txt odeer .rtf in .bak beim neuen Speichern beim Öffnen ändern kann? Bin für jeden Hinweis und Hilfe dankbar. Lieber Gruß lempy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 29. Juli 2014 Teilen Geschrieben 29. Juli 2014 Path.GetFileNameWithoutExtension Method (System.IO) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 29. Juli 2014 Teilen Geschrieben 29. Juli 2014 <Ingrid/> Die Methode hast du ja schon gefunden. Der Versuch sieht doch gut aus, was passte denn daran nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lempy Geschrieben 29. Juli 2014 Autor Teilen Geschrieben 29. Juli 2014 Hallo Klotzkopp Habe eben ein wenig mit Deinem Hinweis gebastelt, aber funktioniert nicht. Hier mal meine Versuche. Irgendwas verstehe ich da nicht. /*richTextBox1->SaveFile(dateiname + ".bak");*/ richTextBox1->SaveFile(Path::GetFileNameWithoutExtension(dateiname+".bak")); /*kopie = Path::GetFileNameWithoutExtension(dateiname)+".bak";*/ /*kopie = Path::GetFileName(openFileDialog1->FileName);*/ /* SaveFile(kopie);*/ Die mit "openDialog" geöffnete original Datei soll auch im Original erhalten bleiben und zusätzlich soll eine .bak-Datei gespeichert werden. Entweder im Selben Ordner oder in einem Archiv im selben Ordner. Mit meiner Anweisung : richTextBox1->SaveFile(dateiname + ".bak"); habe ich wenigstens die zweite Datei. Diese heißt dann aber z.B. test.rtf.bak und nicht test.bak. Die Hilfe, Anweisung was auch immer es ist liest sich einfach und ist so ja verständlich, aber das Umsetzen in einen funktionierenden Code ist irgendwie was geheimnisvolles. Eine "automatische" Sicherung einer Datei kann doch nicht so viel schwieriger sein als das einfache Speichern? Lieben Dank für Deine Hilfe lempy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 29. Juli 2014 Teilen Geschrieben 29. Juli 2014 Zunächst würde ich eine Backup-Datei beim Speichern erstellen, nicht beim Öffnen. Und das auch nicht durch irgendwelche Open- und Save-Methoden, sondern durch echtes Kopieren der Datei. Dieser Versuch aus deinem Code sollte den Dateinamen für die Backup-Datei richtig erzeugen. kopie = Path::Combine(Path::GetDirectoryName(dateiname), Path::GetFileNameWithoutExtension(dateiname) + L".BAK"); Übrigens: Wenn du unterschiedliche Dateitypen verarbeiten kannst, würde ich dazu raten, die ursprüngliche Dateierweiterung nicht abzuschneiden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lempy Geschrieben 29. Juli 2014 Autor Teilen Geschrieben 29. Juli 2014 Hallo Klotzkopp Nach Deiner Aussage währe dann der vollständige ursprüngliche Dateiname z. B. test.rft? Aufgabenstellung sagt ausdrücklich beim Öffnen. Warum auch immer? Kopieren erfolgt dann mit: File->Copy(Name original Pfad, Name des original Pfades + eventuell Ordner Archiv, true wenn Vorhanden dann überschreiben) Erst mal so ohne mich weiter damit eingehender beschäftigt zu haben. Dabei denke ich an "openDialog->FileName", mit dem ich ja meine Datei auswähle. Währe nett, wenn Du mir eventuell die richtige Übersetzung "Codesyntax ins Deutsche" dazu erläutern kannst, wenn meine oben genannte nicht korrekt ist. Lieben Dank lempy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 29. Juli 2014 Teilen Geschrieben 29. Juli 2014 Nach Deiner Aussage währe dann der vollständige ursprüngliche Dateiname z. B. test.rft? Irgendwelche Überlegungen zur Sinnhaftigkeit des Namens der Backupdatei sind hinfällig, wenn in der Aufgabenstellung drinsteht, wie der Name der Backupdatei aufgebaut soll. Tut es das? Währe nett, wenn Du mir eventuell die richtige Übersetzung "Codesyntax ins Deutsche" dazu erläutern kannst, wenn meine oben genannte nicht korrekt ist.Du schreibst in Rätseln. File::Copy(quelle, ziel, true); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerDa71 Geschrieben 31. Juli 2014 Teilen Geschrieben 31. Juli 2014 Hallo lempy, ich denke dein Problem liegt hier: richTextBox1->SaveFile(Path::GetFileNameWithoutExtension(dateiname+".bak")); richTextBox1->SaveFile(Path::GetFileNameWithoutExtension(dateiname)+".bak"); Das +".bak" muss ausserhalb der Klammern passieren, da sonst durch GetFileNameWithoutExtension aus "test.rtf.bak" wieder "test.rtf" wird. MFG DerDa71 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.