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