![]() |
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 |
Re: Hilfe bei Save und Open Dialogs
Man kann die Dialog wie folgt benutzten:
Delphi-Quellcode:
MfG,
if dialog.execute then
begin // tue hier irgendwas z.B. Laden oder Speichern // den Dateinamen findest du in dialog.filename (oder so ähnlich) end; Bug |
Re: Hilfe bei Save und Open Dialogs
Hab jetzt folgendes zusammengeschnipselt:
Delphi-Quellcode:
Meine Prozedur SaveFile lautet:
procedure TForm1.Button8Click(Sender: TObject);
begin savedialog1.InitialDir:=(Application.ExeName); if SaveDialog1.Execute then begin SaveFile(SaveDialog1.FileName,ExtractFilepath(SaveDialog1.FileName)); end; end;
Delphi-Quellcode:
Es entsteht eine Fehlermeldung in der markierten Zeile
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; |
Re: Hilfe bei Save und Open Dialogs
Was steht in Pfad drinnen?
|
Re: Hilfe bei Save und Open Dialogs
Kein Wunder, mit
Delphi-Quellcode:
bastelst du dir, wenn deine ausgewählte Datei "C:\foo\bar.exe" heisst, folgenden Pfad zum speichern zusammen:
Pfad + Name+'.txt'
C:\foo\C:\foo\bar.exe.txt Das entspricht: ExtractFilepath(SaveDialog1.FileName) + SaveDialog1.FileName + '.txt' MfG, Bug |
Re: Hilfe bei Save und Open Dialogs
ok das hab ich jetzt zusammengekriegt
Delphi-Quellcode:
klappt jetzt eigentlich auch mit dem speichern
procedure TForm1.Button8Click(Sender: TObject);
begin savedialog1.InitialDir:=(Application.ExeName); if SaveDialog1.Execute then begin SaveFile(SaveDialog1.FileName,ExtractFilepath(SaveDialog1.FileName)); end; end; nun möchte ich aber die Datei auslesen und stoße immer wieder auf E/A Probleme Hier mein Code:
Delphi-Quellcode:
Aber leider verursacht das reseten Probleme
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; //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 |
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:
C:\Programme\C:\Programme\Programm.txt
ExtractFilePath(OpenDialog1.Filename)+OpenDialog1.filename
|
Re: Hilfe bei Save und Open Dialogs
Zitat:
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); |
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 11:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz