| Autor |
Beitrag |
beljo
      
Beiträge: 129
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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 
      
Beiträge: 129
|
Verfasst: 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 10.04.06 10:02
Dafür bietet sich doch eine INI-Datei an.
//EDIT: Erster 
Zuletzt bearbeitet von jasocul am Mo 10.04.06 10:07, insgesamt 1-mal bearbeitet
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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 
      
Beiträge: 129
|
Verfasst: Mo 10.04.06 10:44
Ich habs über eine Inifile probiert.
Aber irgendetwas mach ich falsch 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); end; end; |
Speichere ich nicht den Pfad so ab?
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Mo 10.04.06 10:49
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 129
|
Verfasst: 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. 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); 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
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Mo 10.04.06 11:34
beljo hat folgendes geschrieben: | 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 129
|
Verfasst: 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? 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); end; end; |
?? müsste Doch eigendlich klappen, oder hab ich was übersehen?
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 10.04.06 12:09
beljo hat folgendes geschrieben: | | ?? müsste Doch eigendlich klappen, oder hab ich was übersehen? |
Die letzten Beiträge und den Link zum Tutorial.
|
|
beljo 
      
Beiträge: 129
|
Verfasst: 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 129
|
Verfasst: 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. 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
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 10.04.06 13:19
Und das machst du mit ReadString (s.o.) am Besten im TForm1.Create.
|
|
beljo 
      
Beiträge: 129
|
Verfasst: 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  .
Danke Leute, meist sind es nur solche kleinigkeiten die einem das Genick brechen
|
|