Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Brauche Hilfe. Noch mal Dateien

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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

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.

  • Autor

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

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);

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.