Autor Beitrag
Grolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95

Win XP, Win 7
Delphi 2010 Pro
BeitragVerfasst: Di 15.02.05 16:40 
Ich brauche mal nen kleinen Denkanstoss....
Ich habe in meinem Programm folgende Routine für "Speichern unter":
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Speichernals1Click(Sender: TObject);
begin
 if PageControl1.ActivePage = TabSheet1  then
    begin
    SaveDialog1.Filter := 'Html Dateien (*.html; *.htm)|*.html; *.htm';
    SaveDialog1.DefaultExt := 'html; htm';
      if SaveDialog1.Execute then
      SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    end;
 if PageControl1.ActivePage = TabSheet2 then
    begin
    SaveDialog1.Filter := 'Php Dateien (*.php; *.php3; *.php4; *.dat)|*.php; *.php3; *.php4; *.dat';
    SaveDialog1.DefaultExt := 'php; php3; php4; dat';
      if SaveDialog1.Execute then
      SynEdit2.Lines.SaveToFile(SaveDialog1.FileName);
    end;

usw usw......


Das klappt auch wunderbar. Ich habe jetzt nur Probleme mit dem normalen
speichern (zwischenspeichern), da dies ja nicht über den SaveDialog geht!

:gruebel:

Viele Grüße: Grolle
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 15.02.05 16:43 
Grolle hat folgendes geschrieben:
Das klappt auch wunderbar. Ich habe jetzt nur Probleme mit dem normalen
speichern (zwischenspeichern), da dies ja nicht über den SaveDialog geht!


Darf ich fragen welche Probleme? Fehlermeldungen? Leere Dateien? Hab meine Glaskugel grade nicht bei der Hand ;)

AXMD
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: Di 15.02.05 16:47 
Er wird noch keinen Dateinamen haben, meint mein Glaskugel.
Also
- einen zufälligen nehmen
- Bei Programmende fragen ob gespeichert werden soll
- Nach dem Speichern (also SaveAs oder beim Programmende) die Zwischendatei löschen.

oder so ähnlich


Zuletzt bearbeitet von jasocul am Di 15.02.05 16:47, insgesamt 1-mal bearbeitet
Grolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95

Win XP, Win 7
Delphi 2010 Pro
BeitragVerfasst: Di 15.02.05 16:47 
Ich weiß einfach nicht, wie ich es umsetzen soll
Habs so probiert, aber es klappt natürlich nicht (EFCreateError)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
begin
  if PageControl1.ActivePage = TabSheet1 then
  begin
    SynEdit1.Lines.SaveToFile(pfad);
    SynEdit1.Modified := False;
  end;


Grolle
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 15.02.05 16:48 
jasocul hat folgendes geschrieben:
Er wird noch keinen Dateinamen haben, meint mein Glaskugel.
Also
- einen zufälligen nehmen
- Bei Programmende fragen ob gespeichert werden soll
- Nach dem Speichern (also SaveAs oder beim Programmende) die Zwischendatei löschen.

oder so ähnlich


Hä :gruebel:? Einen Dateinamen hat er sicher, siehe:

ausblenden Delphi-Quelltext
1:
2:
if SaveDialog1.Execute then  
      SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);


Grolle, was genau funzt nicht?

AXMD
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 15.02.05 16:51 
Den dateinamen hat er aber nur beim 'Speichern unter...' nicht beim normalen speichern, wenn man auf Datei...speichern geht wird ja normalerweise auch keine savedialog angezeigt.

@Grolle: Dein Code stimmt so, kann nicht nachvollziehen warum da ein Create-error auftritt. Poste mal bitte wo du pfad hernimmst...das ist doch nicht etwa ein leere Variable?
Grolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95

Win XP, Win 7
Delphi 2010 Pro
BeitragVerfasst: Di 15.02.05 17:00 
Das ist ja das Problem, ich weiß nicht wie ich Pfad deklarieren muss.
Ist im Moment unter private als string deklariert.

@ AXMD Verstehe ich das jetzt richtig, dass ich auch den FileName vom SaveDialog
übernehmen indem ich den Nutzer zwinge diesen zuerst zu benutzen?

Viele Grüße...
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 15.02.05 17:12 
Okay, du weisst also nicht woher der Pfad kommen soll.

Normalerweise kannst du das Zwischenspeichern nur ausführen, wenn schon einmal richtig gespeichert worden ist, also wenn schon eine neue Datei erstellt wurde.

Dann fügste deine Pfad-Variable mal in die globalen hotkeys ein, und schreibst deinen jetztigen Code um:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.Speichern();
//Mach ne Prozedure draus! Du wirst dir dafür noch danken wenn du mal die Gui umändern musst...
begin   
 if PageControl1.ActivePage = TabSheet1  then   
    begin   
    SaveDialog1.Filter := 'Html Dateien (*.html; *.htm)|*.html; *.htm';   
    SaveDialog1.DefaultExt := 'html; htm';   
      if SaveDialog1.Execute then
       begin   
        SynEdit1.Lines.SaveToFile(SaveDialog1.FileName);   
        Pfad := SaveDialog1.FileName;
       end;   
 if PageControl1.ActivePage = TabSheet2 then   
    begin   
    SaveDialog1.Filter := 'Php Dateien (*.php; *.php3; *.php4; *.dat)|*.php; *.php3; *.php4; *.dat';   
    SaveDialog1.DefaultExt := 'php; php3; php4; dat';   
      if SaveDialog1.Execute then   
       begin
        SynEdit2.Lines.SaveToFile(SaveDialog1.FileName);   
        Pfad := SaveDialog1.FileName;
       end;
    end;


Beim Klick auf Speichern Unter...rufst du dann einfach:

ausblenden Delphi-Quelltext
1:
 Speichern;					


auf. Beim Klick auf das normale Speichern machst du das so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
begin
 if Pfad <> '' then
  memo1.lines.savetofile(pfad)
  else
  Speichern;
end;
Grolle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95

Win XP, Win 7
Delphi 2010 Pro
BeitragVerfasst: Di 15.02.05 17:23 
:D Supi. Danke für das entfernen des Brettes vor meinem Kopf.
Grolle