Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Prbleme beim Speichern mit TSaveDialog (https://www.delphipraxis.net/81482-prbleme-beim-speichern-mit-tsavedialog.html)

Darkchild 28. Nov 2006 07:30


Prbleme beim Speichern mit TSaveDialog
 
Morgen zusammen,

folgendes kleines Problem:

Ich habe eine Maske mit einem Grid, welches Daten enthält. Dieses wird mit einem Befehl an Excel übergeben und liegt somit dann schön Tabellarisch zum Ausdruck vor.
Jetzt war der Pfad wo das Grid als *.xls Datei gespeichert wird vorher hart im Quellcode Codiert.
Habe deshalb jetzt einen TSaveDialog hinzugefügt um vorhandene Datein zu überschreiben oder halt neue Dateien mit dem Inhalt meines Grids unter beliebigem Namen anzulegen.
Nun mein Problem, der Dialog öffnet sich, ich kann einen Namen eingeben oder eine Datei aussuchen und sagen speichern, der legt die Datei auch an kann aber nicht beenden da er den Inhalt des Grids nicht hineinspeichern kann da er die Meldung bekommt "Can't create the Export output File" und kurz davor kommt eine Exception die sagt "Der Prozess kann nicht auch die Datei zugreifen, da sie von einem anderen Prozess verwendet wird".

An dieser stelle komme ich jetzt gerade nicht weiter, fehlt da ein Close oder etwas anderes, obwohl wenn ich das Close reinsetzte, dann motzt der Compiler weil "Inkompatiebele Typen String und File".
Kann mir da vielleicht jemand Helfen ?
Wäre echt toll.

Delphi-Quellcode:
procedure Tfrmzeiterfassunguebersicht.cxbtnexcelexportClick(Sender: TObject);
var
FName:file;
Filepath:String;
begin
SaveDialog1.Execute;
AssignFile(FName, savedialog1.filename);
Rewrite(FName);
FilePath := savedialog1.FileName;
//close(FName);
ExportGrid4ToExcel(FilePath, cxgridzeiterfassungansicht,True,True,False,'xls');
end;
habe vorher den SaveDialog noch nie benutzt und in der Hilfe von BDS 2006 steht nicht wirklich viel drin was mir weiter hilft, mir fehlen in der neuen Delphi - Hilfe ganzklar die Quellcode - Beispiele wie es vorher noch in Delphi 7 der fall war. Ich weiss garnicht wann diese rausgenommen wurden, Delphi 7 war die Version die ich vor BDS 2006 benutzt habe und da war alles noch normal.


Gruss
Darkchild

P.S: Der Export der Datei in Excel läuft von einem cxdbGrid her mit dem dazugehörigen befehl von DevExpress (ist der letzt Befehl des hier dargestellten Quellcodes).

Darkchild 28. Nov 2006 07:43

Re: Prbleme beim Speichern mit TSaveDialog
 
Habe es glaube ich gerade selbst gelöst:

Sieht jetzt wie folgt aus und scheint zu funktionieren:
Delphi-Quellcode:
procedure Tfrmzeiterfassunguebersicht.cxbtnexcelexportClick(Sender: TObject);
var
F:file;
Filepath:String;
begin
SaveDialog1.Execute;
AssignFile(F, savedialog1.filename);
FilePath := savedialog1.FileName;;
ExportGrid4ToExcel(FilePath, cxgridzeiterfassungansicht,True,True,False,'xls');
//Rewrite(F);
//close(F);
end;
Falls noch einer von euch anmerkungen hat oder sieht das es noch nicht wirklich fehlerfrei ist dann wäre ich für anmerkungen sehr dankbar.

Gruss
Darkchild

dataspider 28. Nov 2006 08:13

Re: Prbleme beim Speichern mit TSaveDialog
 
Hi,

wenn du die Datei mit AssignFile öffnest, kann der Exportprozess nicht mehr zugreifen. Du sperrst dich selbst vor dem Export.
Folgender Code reicht völlig aus:
Delphi-Quellcode:
procedure Tfrmzeiterfassunguebersicht.cxbtnexcelexportClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
    ExportGrid4ToExcel(savedialog1.FileName, cxgridzeiterfassungansicht,True,True,False);
end;
Cu, Frank

Darkchild 28. Nov 2006 08:36

Re: Prbleme beim Speichern mit TSaveDialog
 
Jo, habe ich geändert, ging vor jetzt auch, aber dennoch habe ich das jetzt mal so gemacht wie Du um evt. in der Laufenden Anwendung auf dauer Fehler zu vermeiden.

Thanks !!! :dancer: :cheers:

Gruss
Darkchild


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 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