Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei unter einem anderem Namen speichern (https://www.delphipraxis.net/92166-datei-unter-einem-anderem-namen-speichern.html)

HolgerCW 15. Mai 2007 14:31


Datei unter einem anderem Namen speichern
 
Hallo zusammen,

wie kann ich eine pdf-Datei, die ich ausgewählt habe unter einem anderem Namen automatisch speichern.

So speichert er eine Pdf-Datei mit 0 KB ab:

Delphi-Quellcode:
OpenDialogPruefprotokoll.FileName := '*.pdf';

If OpenDialogPruefprotokoll.Execute then
begin
 if pos('.pdf',OpenDialogPruefprotokoll.FileName) = 0 then
 begin
  showmessage('Bitte wählen Sie eine gültige Datei aus.');
  exit;
 end;

 if FileExists(OpenDialogPruefprotokoll.FileName) then
 begin
  SaveDialogPruefprotokoll.FileName := OpenDialogPruefprotokoll.FileName;
  SaveDialogPruefprotokoll.Files.SaveToFile('U:\Files\Prüfprotokoll.pdf');
 end
 else
 begin
  showmessage('Bitte wählen Sie eine gültige Datei aus.');
  exit;
 end;
end;
Für Hilfe wäre ich sehr dankbar

Gruss

Holger

dominikkv 15. Mai 2007 14:39

Re: Datei unter einem anderem Namen speichern
 
du kannst mit
Delphi-Quellcode:
CopyFile(PChar(Quelle), PChar(Ziel), False);
dateien kopieren...

HolgerCW 15. Mai 2007 14:54

Re: Datei unter einem anderem Namen speichern
 
Danke,

das klappt, aber er überschreibt eine existierende Datei nicht mehr ...

Wie bekomme ich das denn hin ?

Gruss

Holger

Der_Unwissende 15. Mai 2007 14:57

Re: Datei unter einem anderem Namen speichern
 
Zitat:

Zitat von HolgerCW
So speichert er eine Pdf-Datei mit 0 KB ab:

Delphi-Quellcode:
 if FileExists(OpenDialogPruefprotokoll.FileName) then
 begin
  SaveDialogPruefprotokoll.FileName := OpenDialogPruefprotokoll.FileName;
  SaveDialogPruefprotokoll.Files.SaveToFile('U:\Files\Prüfprotokoll.pdf');
 end

Hi,
wie Du Dateien kopieren kannst hat dominikkv ja schon gesagt. Allerdings wollte ich noch kurz ergänzen, warum Dein Code nicht funktioniert. Die TSaveDialog-Komponente hat eine Funktion, die ganz analog zu der eines TOpenDialog ist. Es sind nur Dialoge, die den Benutzer nach einem Pfad fragen. In einem Fall geht es darum, dass Du die Datei mit dem entsprechenden Pfad gerne öffnen möchtest, im anderen Fall möchtest Du eine Datei mit angegebenen Pfad speichern. Der Dialog übernimmt dabei nur das Ermitteln des Pfades (also der String wohin gespeichert / von wo gelesen werden soll).
Das Laden oder speichern hat aber nichts mit den Dialogen selbst zu tun!

In den von mir zitierten Zeilen setzt Du den Wert der FileName-Eigenschaft eines TSaveDialog. In der nächsten Zeile speicherst Du das TStrings-Objekt Files unter einem bestimmten Namen. Da Du der StringList Files aber keinen Eintrag hinzugefügt hast ist die leer (ergibt dann die 0 kByte Datei).
Die eigentliche Verwendung eines TSaveDialog hätte viel mehr die Form

Delphi-Quellcode:
if SaveDialogXYZ.execute then
begin
  ZuSpeicherndesObjekt.saveToFile(SaveDialogXYZ.FileName);
end;
Wie Du siehst ähnelt das sehr stark der Verwendung des TOpenDialog. Die Files Eigenschaft (die Du auch bei TOpenFileDialog findest) dient nur der Mehrfachauswahl von Dateien. Macht natürlich mehr Sinn, wenn Du Dateien öffnest. Hier kannst Du dann das Öffnen von mehr als einer Datei zulassen und würdest diese alle in der Files Eigenschaft (ein TStrings-Objekt) finden.

Gruß Der Unwissende

inherited 15. Mai 2007 14:57

Re: Datei unter einem anderem Namen speichern
 
DeleteFile zuerst aufrufen

leddl 15. Mai 2007 15:00

Re: Datei unter einem anderem Namen speichern
 
Zitat:

Zitat von HolgerCW
das klappt, aber er überschreibt eine existierende Datei nicht mehr ...
Wie bekomme ich das denn hin ?

Hast du auch schon mal in die Hilfe geschaut? :gruebel: Du hast doch jetzt eine Methode gezeigt bekommen, bei der du zumindest einen der Parameter auf Anhieb nicht einordnen können dürftest. Da wäre es doch interessant gewesen, da mal nachzuschauen :zwinker: (Das wäre zumindest das erste gewesen, was ich gemacht hätte)

//Edit: AFAIR sollte das "FALSE" aber eigentlich dafür sorgen, dass deine alten Dateien automatisch überschrieben werden... :gruebel:-

HolgerCW 15. Mai 2007 15:28

Re: Datei unter einem anderem Namen speichern
 
Habe das ja nun mit dem CopyFile Befehl versucht und da überschreibt er das alte File nicht.

Was mache ich da falsch ?

Gruss

Holger

dominikkv 15. Mai 2007 16:02

Re: Datei unter einem anderem Namen speichern
 
Zitat:

Zitat von HolgerCW
Habe das ja nun mit dem CopyFile Befehl versucht und da überschreibt er das alte File nicht.

Was mache ich da falsch ?

Gruss

Holger

einfach als letztes argument true...
Delphi-Quellcode:
CopyFile(PChar(Quelle), PChar(Ziel), True);


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz