Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe bei Save und Open Dialogs (https://www.delphipraxis.net/108499-hilfe-bei-save-und-open-dialogs.html)

Coder1990 14. Feb 2008 21:41


Hilfe bei Save und Open Dialogs
 
Seas,

ich fress mich jetzt paar Stunden durch Google und die Forums-interne Suche finde aber echt keine Möglichkeit die ich verstehe.
Also ich hab ein Script Programm geschrieben und will nun die eingespeicherten Befehle in eine Textdatei abspeichern bzw. später wieder auslesen. Ich hab mir gedacht ich lös das mit SaveDialog und OpenDialog.
Folgendes soll passieren:
Bei Button klick öffnen des Savedialogs <- klappt natürlich^^
Auswahle des Dateinamens / Pfades*
Erstellen der Datei / Daten reinschreiben <- Hierfür hab ich auch schon eine Methode

Bei Button klick öffnen des OpenDialogs
Soll nur txt Dateien anzeigen
Auslesen der ausgewählten Datei ...

*Ich müsste eigentlich nur wissen wie ich den Path der "gewünschten" Datei und den Namen auslesen könnte (ich raff das net"
Oder speichert SaveDialog von selbst eine Datei? Muss man da vll keine selbst erstellen?

MfG

Coder

BUG 14. Feb 2008 21:47

Re: Hilfe bei Save und Open Dialogs
 
Man kann die Dialog wie folgt benutzten:
Delphi-Quellcode:
if dialog.execute then
begin
     // tue hier irgendwas z.B. Laden oder Speichern
     // den Dateinamen findest du in dialog.filename (oder so ähnlich)
end;
MfG,
Bug

Coder1990 14. Feb 2008 21:56

Re: Hilfe bei Save und Open Dialogs
 
Hab jetzt folgendes zusammengeschnipselt:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
savedialog1.InitialDir:=(Application.ExeName);
if SaveDialog1.Execute then begin
SaveFile(SaveDialog1.FileName,ExtractFilepath(SaveDialog1.FileName));

end;
end;
Meine Prozedur SaveFile lautet:

Delphi-Quellcode:
procedure SaveFile(Name:string;Pfad:WideString);
var
Datei: TextFile;
i:integer;
begin
AssignFile(Datei, Pfad + Name+'.txt');
[i]Rewrite(Datei);[/i]
for i:=1 to form1.Max-1 do begin
if form1.KlickType[i]=1 then WriteLn(Datei, '1 '+inttostr(form1.pos[i].X)+'/'+inttostr(form1.pos[i].Y) );
if form1.KlickType[i]=2 then WriteLn(Datei, '2 '+inttostr(form1.pos[i].X)+'/'+inttostr(form1.pos[i].Y) );
if form1.KlickType[i]=3 then
                        begin
                        WriteLn(Datei, '3 '+ inttostr(Integer(form1.ButtonType1[i]) ));
                        end;
if form1.KlickType[i]=4 then WriteLn(Datei, '4 '+form1.TexttoType[i] );

end;
CloseFile(Datei);

end;
Es entsteht eine Fehlermeldung in der markierten Zeile

mkinzler 14. Feb 2008 22:01

Re: Hilfe bei Save und Open Dialogs
 
Was steht in Pfad drinnen?

BUG 14. Feb 2008 22:05

Re: Hilfe bei Save und Open Dialogs
 
Kein Wunder, mit
Delphi-Quellcode:
Pfad + Name+'.txt'
bastelst du dir, wenn deine ausgewählte Datei "C:\foo\bar.exe" heisst, folgenden Pfad zum speichern zusammen:

C:\foo\C:\foo\bar.exe.txt

Das entspricht:

ExtractFilepath(SaveDialog1.FileName) + SaveDialog1.FileName + '.txt'


MfG,
Bug

Coder1990 15. Feb 2008 11:17

Re: Hilfe bei Save und Open Dialogs
 
ok das hab ich jetzt zusammengekriegt

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
savedialog1.InitialDir:=(Application.ExeName);
if SaveDialog1.Execute then begin
SaveFile(SaveDialog1.FileName,ExtractFilepath(SaveDialog1.FileName));

end;
end;
klappt jetzt eigentlich auch mit dem speichern
nun möchte ich aber die Datei auslesen und stoße immer wieder auf E/A Probleme
Hier mein Code:
Delphi-Quellcode:
if OpenDialog1.Execute then begin
AssignFile(Datei,ExtractFilePath(OpenDialog1.Filename)+OpenDialog1.filename);
end;
reset(Datei);
// Auslesen
repeat
Readln(Datei,Line);
case Line[1] of // Erkennung 1
                '1':
                 .........
until eof(datei);
end;
Aber leider verursacht das reseten Probleme

//edit P.S.: wie krieg ich hin dass beim opendialog nur txt dateien angezeigt werden?

//edit2: Um genau zu sein ist es ein "EinOutError" oder so

DeddyH 15. Feb 2008 16:02

Re: Hilfe bei Save und Open Dialogs
 
1. Schau Dir mal die Eigenschaft Filter des Dialogs an.
2. Wenn OpenDialog1.Filename z.B. C:\Programme\Programm.txt heißt, dann ergibt
Delphi-Quellcode:
ExtractFilePath(OpenDialog1.Filename)+OpenDialog1.filename
C:\Programme\C:\Programme\Programm.txt

shmia 15. Feb 2008 16:12

Re: Hilfe bei Save und Open Dialogs
 
Zitat:

Zitat von Coder1990
Hab jetzt folgendes zusammengeschnipselt:
Delphi-Quellcode:
procedure SaveFile(Name:string;Pfad:WideString);
var
Datei: TextFile;
i:integer;
begin
AssignFile(Datei, Pfad + Name+'.txt');

Der Code Schnipsel von oben ist Quark. So wird's richtig:
Delphi-Quellcode:
// SaveFile() bekommt den ganzen Dateinamen inclusive Pfad übergeben - da reicht 1 Parameter
procedure SaveFile(const filename:string);
var
Datei: TextFile;
i:integer;
begin
AssignFile(Datei, filename);

Coder1990 15. Feb 2008 22:40

Re: Hilfe bei Save und Open Dialogs
 
großes danke eigentlich ziemlich blöd mein fehler, hab den einfach irgendwann am anfang gemacht und dann später nicht mehr gefunden


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