Autor Beitrag
beljo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 09:51 
Hallo Leute,
kann mir jemand sagen wie man beim OpenDialog oder SaveDialog eine Merkfunktion einbaut?
Möchte gern das er immer in dem Order ist, wo er zuletzt gespeichert bzw. gladen hat.
Undzwar jeder Dialog für sich.
Danke im Vorraus
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 10.04.06 09:54 
Moin!

Soll der Pfad über das Programmende hinaus in der nächsten Sitzung wieder voreingestellt sein, oder nur wärend der aktuellen Sitzung?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 10:01 
Sollte über das Programmende hinaus funzen.
habs bis zum Programmende geschaft, Leider merkt er es sich nicht nach Programmende :-(
OpenDialog1.InitialDir := ExtractFilePath(OpenDialog1.fileName);
so klappts nur bis zum Programmende.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 10:02 
Dafür bietet sich doch eine INI-Datei an.
//EDIT: Erster :dance2:


Zuletzt bearbeitet von jasocul am Mo 10.04.06 10:07, insgesamt 1-mal bearbeitet
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 10.04.06 10:02 
mach dich mal über ini-dateien schlau (gibts ganz viel im forum zu)
da kannst du dann immer den letzen pfad reinschreiben und beim öffnen des progs wieder raus auslesen :)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 10.04.06 10:02 
Moin!

Dann könntest du den Pfad z.B. in einer INI-Datei sichern. Mach dich mal mit der Suchfunktion über INI-Dateien schlau. Wenn du dann noch eine Frage dazu hast, kannste die dann ja wieder hier vorstellen. ;)

cu
Narses

//EDIT: mein Gott, <stürz drauf>... ;)

_________________
There are 10 types of people - those who understand binary and those who don´t.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 10:44 
Ich habs über eine Inifile probiert.
Aber irgendetwas mach ich falsch
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TSM.Button2Click(Sender: TObject);
begin
if OpenDialog2.execute then
  begin
   OpenDialog2.InitialDir := ExtractFilePath(OpenDialog2.Filename);
   ini :=TiniFile.Create(openDialog2.filename);
   ini.writeString('zeile','spalte',opendialog2.filename);
   opendialog2.filename:=ini.ReadString('zeile','spalte',opendialog2.filename);
   ini.free;
   memo3.text:= (openDialog2.filename);          // Pfad wird im Memofeld angezeigt
  end;
end;

Speichere ich nicht den Pfad so ab?
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 10.04.06 10:49 
user profile iconbeljo hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
   ini :=TiniFile.Create(openDialog2.filename);					



Hmm.. die ini-datei kriegt jetzt den datei-namen, was vorher im opendialog stand... das wolltest du doch bestimmt nicht, oder? :gruebel:

versuchs mal mit

ausblenden Delphi-Quelltext
1:
 ini := TIniFile.Create(extractfilepath(paramstr(0))+'test.ini');					
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 10:51 
Im Create deines INI-Objekts musst du natürlich einen "festen" Dateinamen (und Verzeichnis) angeben und nicht die Datei, die du mit dem OpenDialog gerade öffnen wolltest. Dadurch überschreibst du die Daten nämlich.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 11:17 
Ich dachte das ich bevor ich die Datei überschreibe sie versuche einzulesen :?: .
Naja egal jedenfalls habe ich einen festen Speicherplatz zugeordnet.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TSM.Button2Click(Sender: TObject);
begin
if OpenDialog2.execute then
  begin
   OpenDialog2.InitialDir := ExtractFilePath(OpenDialog2.Filename);
   ini := TIniFile.Create('C:\Documents and Settings\MinicS\Desktop\Materialien\dat');
   ini.writeString('zeile','spalte',opendialog2.filename);
   opendialog2.filename:=ini.ReadString('zeile','spalte',opendialog2.filename);
   ini.free;
   memo3.text:= (openDialog2.filename);          // Pfad wird im Memofeld angezeigt
  end;
end;
Leider funktioniert es immernoch nicht über das Programmende hinaus.Kann mir jemand sagen warum mein Pfad nicht abgelegt wird bzw. ich ihn nicht Finden kann??
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 10.04.06 11:34 
user profile iconbeljo hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
   ini := TIniFile.Create('C:Documents and Settings\MinicS\Desktop\Materialien\dat.ini');					


so ausprobieren!

ach so... wie und wo deklarierst du ini?
und hast du ini-files bei uses eingebunden??
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 11:34 
Kurze Einweisung:
Create: Hiermit erzeugst du das Objekt und legst fest, in welcher Datei die Informationen gespeichert werden.
WriteString: Dort übergibst du den Bereich, die "Variable" und den Wert, damit das in der Datei gespeichert werden kann.
ReadString: Damit liest du die Daten wieder ein. Die Parameter müssen natürlich genauso benannt sein, wie bei WriteString.

Hier ein Tutorial
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 12:05 
Ich habe die Inifiles global deklariert.
Ausserdem habe ich unter Uses Inifiles angegeben.
Leider klappt es immernoch nicht auch mit Miris vorschlag nicht.
Ist den mein Ansatz überhaupt richtig?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TSM.Button2Click(Sender: TObject);
begin
if OpenDialog2.execute then
  begin
   OpenDialog2.InitialDir := ExtractFilePath(OpenDialog2.Filename);
   ini := TIniFile.Create('C:\Documents and Settings\MinicS\Desktop\Materialien\dat.ini');
   ini.writeString('zeile','spalte',opendialog2.filename);
   opendialog2.filename:=ini.ReadString('zeile','spalte',opendialog2.filename);
   ini.free;
   memo3.text:= (openDialog2.filename);          // Pfad wird im Memofeld angezeigt
  end;
end;

?? müsste Doch eigendlich klappen, oder hab ich was übersehen?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 12:09 
user profile iconbeljo hat folgendes geschrieben:
?? müsste Doch eigendlich klappen, oder hab ich was übersehen?

Die letzten Beiträge und den Link zum Tutorial.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 12:36 
Tut mir leid wenn ich euch auf die Nerven gehe.
Leider kriegs ich es nicht so ohne weiteres hin, trozdem danke für eure aufmerksamkeit.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 12:41 
Du gehst uns nicht auf die Nerven. Tut mir leid, wenn du das so verstanden hast.
Dein Source hat sich nicht verändert. Daher musste ich schließen, dass du die anderen Beiträge nicht gelesen hast und den Link nicht beachtet hast.
INI-Dateien sind wirklich nichts kompliziertes, man muss sich allerdings schon damit beschäftigen. Den Source wird hier normalerweise keiner für dich fertig machen.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 13:11 
Ok. also will ja garnicht alles vorgekaut haben.
aber ich gehe mal Schritt für Schritt meine Mehtode durch.1.
ini := TIniFile.Create('C:\Documents and Settings\MinicS\Desktop\Materialien\dat.ini');
Hier lege ich meinen Speicherplatz für die Inidatei ab ok?
2.
ini.writeString('zeile','spalte',Opendialog2.filename);
Hier lege ich den Pfad und den Namen meines zu speichendes Verzeichniss ab, 'Zeile' und 'spalte' hab ich nur hingeschieben um es sofort wiederzufinden wenn ich die Datei öffne.
3.
ausblenden Delphi-Quelltext
1:
2:
OpenDialog2.InitialDir := ExtractFilePath(Opendialog2.filename);
ini.free;

Über diese Zeile bin ich immer in meinen Order wo ich das letzte mal was über den Opendialog2 geoffnet habe.
Ich kann leider keinen fatalError in meinen Anweisungen erkennen...
Wenn jemand Zeit hat kann er ja mal meinen Source ausprobieren und sieht vielleicht was ich übersehen habe wenn nicht Danke ich euch trozdem :-)
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Mo 10.04.06 13:16 
ini-file erstellen und reinschreiben sollte so ja auch klappen...
aber wenn dein programm startet, solltest du daraus auch lesen, sonst nützt dir des ja nichts, die info überhaupt abzulegen...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 10.04.06 13:19 
Und das machst du mit ReadString (s.o.) am Besten im TForm1.Create.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Mo 10.04.06 13:26 
Aber natürlich das war mein Denkfehler, dachte das ich über InitialDir den String aus der IniDat herrauslese.
Ja ich Lese ja nie aus der Ini was raus :oops: .
Danke Leute, meist sind es nur solche kleinigkeiten die einem das Genick brechen