Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi savetofile verträgt sich nicht mit save/opendialog (https://www.delphipraxis.net/121116-savetofile-vertraegt-sich-nicht-mit-save-opendialog.html)

ricwein 22. Sep 2008 16:22


savetofile verträgt sich nicht mit save/opendialog
 
Ich habe folgendes nervendes Problem.
Für ein Programm lass ich den Inhalt eines StrinGrids via SaveDialog abspeichern oder via OpenDialog laden:


Code:
var f: textfile;
    i, k:integer;
begin
if SaveDialog1.Execute
     then begin
            Assignfile(f, saveDialog1.filename);
            rewrite(f);
            with StringGrid1 do
                 begin
                   writeln(f, StringGrid1.colcount);
                   writeln(f, StringGrid1.rowcount);
                   for i:=0 to stringGrid1.colcount-1 do
                       for k:=0 to StringGrid1.rowcount-1 do
                           writeln(f, StringGrid1.Cells[i, k]);
                 end;
                closefile(f);
                geaendert:=false;
          end;
end;
Code:
var f: textfile;
    i, k, n:integer;
    Wort:string;
begin
if OpenDialog1.Execute
     then begin
            AssignFile(f, OpenDialog1.filename);
            Reset(f);
            with StringGrid1 do
                 begin
                   Readln(f, n);
                   StringGrid1.colcount:=n;
                   Readln(f, n);
                   StringGrid1.Rowcount:=n;
                   for i:=0 to stringGrid1.colcount-1 do
                       for k:=0 to StringGrid1.rowcount-1 do
                           begin
                             readln(f, Wort);
                             StringGrid1.Cells[i, k]:=Wort;
                           end;
                 end;
            Closefile(f);
          end;
end;
Soweit funktioniert auch alles einwandfrei, jetzt aber das Problem, an einer späteren stelle möchte ich das Programm den Inhalt des Grids mit IdFTP hochladen lassen (Indy). Dazu fülle ich eine TMemo mit den Daten die ich brauche (sind hier in einer speziellen Reihenfolge, daher die TMemo) und möchte sie dann mit
Code:
form1.Memo1.Lines.SaveToFile('test.txt');
in das Verzeichniss der .exe abspeichern lassen. Stattdessen wird die Datei jedoch in das zuletzt mit Save/OpenDialog aufgerufene Verzeichnis gespeichert -.-
Hat jemand eine Idee wie ich das umgehen könnte? Bin noch relativ neu
Danke

grenzgaenger 22. Sep 2008 16:25

Re: savetofile verträgt sich nicht mit save/opendialog
 
ja, das ist so. wenn du es in ein spezielles verzeichnis laden/speichern möchtest, musst du mit absoluten verzeichnissen arbeiten.

im übrigen das OS übergibt als ersten aufrufparameter des programms den programmnamen inkl. verzeichnis ;-)

Bernhard Geyer 22. Sep 2008 16:31

Re: savetofile verträgt sich nicht mit save/opendialog
 
Zitat:

Zitat von ricwein
und möchte sie dann mit ... in das Verzeichniss der .exe abspeichern lassen.

Ganz schlechte Idee. Auf jeden NT-Basierten System kann es dir passieren das dein Prozess/die Exe keine Schreibrechte auf das .Exe-Verzeichnis hat. Ab Vista wird das bei der überwiegenden Anzahl von PC's der Fall sein.
Entweder Temp-Verzeichnis oder %Appdata%-Verzeichnis falls du die Dateien nicht nur temporär benötigst.

nahpets 22. Sep 2008 16:36

Re: savetofile verträgt sich nicht mit save/opendialog
 
Hallo,

Zitat:

Zitat von grenzgaenger
ja, das ist so. wenn du es in ein spezielles verzeichnis laden/speichern möchtest, musst du mit absoluten verzeichnissen arbeiten.

im übrigen das OS übergibt als ersten aufrufparameter des programms den programmnamen inkl. verzeichnis ;-)

ganz so schlimm ist es nicht (immer).
Die Dialoge haben in Objektinspektor unter Options ofNoChangeDir. Wenn man das auf True setzt, wird nicht in das im Dialog ausgewählte Verzeichnis gewechselt, sondern man bleibt schön da, wo man herkommt.

Stephan

ricwein 22. Sep 2008 16:42

Re: savetofile verträgt sich nicht mit save/opendialog
 
Erstmal Danke für die schnellen Antworten.
@nahpets
klappt super =)
Vielen Dank nochmal


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