Zum Inhalt springen

Brauche Hilfe. Noch mal Dateien


lempy

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...