![]() |
SynEdit der aktuellen Seite abspeichern
Also, ich will das der Inhalt der SynEdit (von der aktuellen Seite) gespeichert wird.
Hier mein Code:
Delphi-Quellcode:
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 ;)
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; Danke im Vorraus |
Re: SynEdit der aktuellen Seite abspeichern
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 :zwinker:
Hier habe ich mal den Source: Deklaration:
Delphi-Quellcode:
Code:
procedure FileSaveAsActionAccept(Sender: TObject);
private Files: TStrings; procedure DoFileSaveAs(fn: TFileName);
Delphi-Quellcode:
Wenn ich Datei abspeichere (beim SaveDialog) kommt ne Fehlermeldung...
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 noch was fehlt, bescheid sagen. Wird dann umgehend gepostet ;) EDIT: Sry für Doppelpost :wall: :angel: MfG XPLOSIV |
Re: SynEdit der aktuellen Seite abspeichern
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:
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!
procedure TDemoForm.FileSaveAsActionAccept(Sender: TObject);
begin with Sender as TFileSaveAs do DoFileSaveAs({FileSaveAsAction.}Dialog.FileName); end; 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 |
Re: SynEdit der aktuellen Seite abspeichern
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: SynEdit der aktuellen Seite abspeichern
*push*
Kommt schon, kann mir einer helfen ? :( Marabu hat den Editor doch gebaut, evtll. weißt du ja die Lösung... |
Re: SynEdit der aktuellen Seite abspeichern
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 |
Re: SynEdit der aktuellen Seite abspeichern
hmm, ich dahcte ich hätte alles richtig nunja, hier viele angaben.
1.
Delphi-Quellcode:
In der Action List hab ich FileSaveAsAction
private
Files: TStrings; function CanFileClose(index: Integer): Boolean; procedure DoFileOpen(fn: TFileName); [b] procedure DoFileSaveAs(fn: [/b]TFileName); 2. Bei der On Accept hab ich folgendes:
Delphi-Quellcode:
3. Hab ich noch DoFileSaveAs
procedure TForm1.FileSaveAsActionAccept(Sender: TObject);
begin with Sender as TFileSaveAs do DoFileSaveAs(Dialog.FileName); end;
Delphi-Quellcode:
4. Hab ich oben noch
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;
Delphi-Quellcode:
Genügt das ? Wenn was fehlt poste ich umgehend ;)
resourcestring
S_DATALOSS = 'Text wurde verändert und noch nicht gespeichert.'#13 + 'Alle Änderungen gehen verloren!' ; |
Re: SynEdit der aktuellen Seite abspeichern
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.
|
Re: SynEdit der aktuellen Seite abspeichern
Hmm, was ist der CallStack ?
Manno, das Ding versaut mein Ganzes Projekt... |
Re: SynEdit der aktuellen Seite abspeichern
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 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