AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SynEdit der aktuellen Seite abspeichern

Offene Frage von "XPLOSIV"
Ein Thema von XPLOSIV · begonnen am 31. Aug 2007 · letzter Beitrag vom 15. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#1

SynEdit der aktuellen Seite abspeichern

  Alt 31. Aug 2007, 21:14
Also, ich will das der Inhalt der SynEdit (von der aktuellen Seite) gespeichert wird.


Hier mein Code:

Delphi-Quellcode:
begin
  SaveDialog1.Filter := 'NPC-Scripte (.d)|*.d';
  SaveDialog1.Execute;
  if SaveDialog1.FileName <> 'then
    begin
      TSynEdit(PageControl1.ActivePage.Controls[0]).Lines.SaveToFile(SaveDialog1.FileName);
    end;
end;
Hoffe jemand kann mir da helfen, also bei den per Knopfdruck erstellten SynEdit klappt das speichern wunderbar, doch ich habe noch einen SynEdit (Name= "SynEdit") in TabSheet2, wenn man den Code also so anpassen könnte das wenn die ActivePage TabSheet2 ist, er die Lines von "SynEdit" speichern soll


Danke im Vorraus
  Mit Zitat antworten Zitat
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#2

Re: SynEdit der aktuellen Seite abspeichern

  Alt 2. Sep 2007, 18:04
So habe nun Marabus "Geschenk" angeguckt und ein wenig kapiert, Dateien in neuen Tabs öffnen klappt wunderbar, doch wie siehts mit abspeichern aus, - nicht gut

Hier habe ich mal den Source:

Deklaration:
Delphi-Quellcode:
 procedure FileSaveAsActionAccept(Sender: TObject);
    private
    Files: TStrings;
    procedure DoFileSaveAs(fn: TFileName);
Code:
Delphi-Quellcode:
procedure TDemoForm.FileSaveAsActionAccept(Sender: TObject);
begin
  with Sender as TFileSaveAs do
    DoFileSaveAs(FileSaveAsAction.Dialog.FileName);
end;

procedure TDemoForm.DoFileSaveAs(fn: TFileName);
var
  se: TSynEdit;
  i: Integer;
begin
  with PageControl do
    i := ActivePageIndex;
  se := TSynEdit(Files.Objects[i]);
  se.Lines.SaveToFile(fn);
  Files[i] := fn;
  if se.Modified then
    se.Modified := False;
end;
Wenn ich Datei abspeichere (beim SaveDialog) kommt ne Fehlermeldung...

Wenn noch was fehlt, bescheid sagen. Wird dann umgehend gepostet

EDIT: Sry für Doppelpost

MfG XPLOSIV
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: SynEdit der aktuellen Seite abspeichern

  Alt 2. Sep 2007, 18:34
Hallo,

wenn du Probleme beim Speichern von Dateien hast, dann dürfte es eine Frage von Zugriffsrechten sein. Meine Demo speichert die Daten anstandslos. Ich sehe eine Änderung, die du an meinem Code gemacht hast und die da nicht hingehört:

Delphi-Quellcode:
procedure TDemoForm.FileSaveAsActionAccept(Sender: TObject);
begin
  with Sender as TFileSaveAs do
    DoFileSaveAs({FileSaveAsAction.}Dialog.FileName);
end;
FileSaveAsAction ist identisch mit Sender, deshalb sollte jeder Verweis auf die Instanzvariable aus OnAccept() heraus unterbleiben. Die Eigenschaft Dialog wird durch das WITH-Statement zuerst bei der Action gesucht und dort auch gefunden!

Wenn du Fehlermeldungen erhältst, dann musst du die auch wörtlich angeben oder einen ScreenShot der Nachricht anhängen. Noch besser ist es, wenn du die Werte der beteiligten Variablen auch noch angibst - hier z.B. fn, den vollständigen Dateinamen.

Freundliche Grüße
  Mit Zitat antworten Zitat
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#4

Re: SynEdit der aktuellen Seite abspeichern

  Alt 5. Sep 2007, 11:43
Hier die Fehlermeldung (Im Anhang) und dann kommt son blauer Pfeil auf:

Delphi-Quellcode:
procedure TForm1.FileSaveAsActionAccept(Sender: TObject);
begin
  with Sender as TFileSaveAs do
    DoFileSaveAs(Dialog.FileName);
end;

Ohne weitere Erklärung.

MfG XPL0SIV
Miniaturansicht angehängter Grafiken
1_194.jpg  
  Mit Zitat antworten Zitat
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#5

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 11:49
*push*

Kommt schon, kann mir einer helfen ? Marabu hat den Editor doch gebaut, evtll. weißt du ja die Lösung...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 11:55
Hallo,

der Fehler wird in der Meldung ja genau beschrieben. Wenn du selbst keine Idee hast, an welcher Stelle er auftritt, dann musst du mal den Call-Stack betrachten. Irgendwo greifst du mit einem ungültigen Index eine StringList zu. Sollte der Fehler mit meiner unveränderten Demo auftreten, dann musst du mir genau die Schritte beschreiben, wie ich ihn nachstellen kann und dann kann ich ihn auch beheben.

Freundliche Grüße
  Mit Zitat antworten Zitat
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#7

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 13:41
hmm, ich dahcte ich hätte alles richtig nunja, hier viele angaben.

1.
Delphi-Quellcode:
  private
    Files: TStrings;
    function CanFileClose(index: Integer): Boolean;
    procedure DoFileOpen(fn: TFileName);
   [b] procedure DoFileSaveAs(fn: [/b]TFileName);
In der Action List hab ich FileSaveAsAction

2. Bei der On Accept hab ich folgendes:
Delphi-Quellcode:
procedure TForm1.FileSaveAsActionAccept(Sender: TObject);
begin
  with Sender as TFileSaveAs do
    DoFileSaveAs(Dialog.FileName);
end;
3. Hab ich noch DoFileSaveAs

Delphi-Quellcode:
procedure TForm1.DoFileSaveAs(fn: TFileName);
var
  se: TSynEdit;
  i: Integer;
begin
  with PageControl1 do
    i := ActivePageIndex;
  se := TSynEdit(Files.Objects[i]);
  se.Lines.SaveToFile(fn);
  Files[i] := fn;
  if se.Modified then
    se.Modified := False;
end;
4. Hab ich oben noch
Delphi-Quellcode:
resourcestring
  S_DATALOSS
    = 'Text wurde verändert und noch nicht gespeichert.'#13
    + 'Alle Änderungen gehen verloren!'
    ;
Genügt das ? Wenn was fehlt poste ich umgehend
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 13:51
Stoppe doch mal den Code per Haltepunkt (F5) bevor der Fehler auftritt. Die in Frage kommende Stelle findest du über den Call Stack. Der Fehler kann zwar in den gezeigten Code-Zeilen auftreten, verursacht wird er aber bestimmt woanders.
  Mit Zitat antworten Zitat
XPLOSIV

Registriert seit: 31. Aug 2007
74 Beiträge
 
#9

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 13:59
Hmm, was ist der CallStack ?

Manno, das Ding versaut mein Ganzes Projekt...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: SynEdit der aktuellen Seite abspeichern

  Alt 8. Sep 2007, 14:43
Bei den Debugger-Optionen machst du ein Häkchen bei "Bei Delphi-Exceptions stoppen", dann startest du dein Programm und wenn der Fehler auftritt, dann kannst du über den Menüeintrag "Ansicht :: Debug-Fenster :: Aufruf-Stack" die fehlgeschlagenen Funktionsaufrufe und ihre Verschachtelung betrachten. Damit kannst du abschätzen, an welcher Stelle du einen Haltepunkt setzen musst um den Inhalt der fehlerhaften Indexvariable zu untersuchen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 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