Warnung : Die Änderungen wurden unter Linux für Linux entwickelt und getestet.

Ich habe keine Maschine mehr mit WINDOWS, sondern nur noch Linux!
WINDOWS 7 war gut, ist aber tot und WINDOWS 10 will ich nie wieder auf meiner Platte haben - egal wie andere darüber denken und urteilen!

Ich hatte bisher unter WINDOWS nur mit Delphi gearbeitet und nun unter Linux mit Lazarus. Ich habe keinerlei Erfahrungen mit Lazarus unter WINDOWS   !!!

Unter WINDOWS könnte es eventuell günstiger sein, die Delphiversion in das Lazarusformat
zu wandeln und dann zu verwenden.

Da meine Änderungen sicher nicht offiziell übernommen werden, ist es durchaus möglich, das Sie nach dem nächsten Upgrade
wider eine Version auf der Platte haben, bei der Sie die Verändereung noch einmal durchführen müssen.


Was wurde geändert ?

neue Funktionen in Synedit unter public:

function TCustomSynEdit.SaveUndo(Name_ : String): Integer;
 
beim beenden von Synedit oder dem Dateiwechsel werden alle Änderungen gesichert
Rufen Sie die function vor dem schließen von Synedit auf!
Nach dem die Funktion aufgerufen wurde, ist der Undu - Speicher gelöscht !
Wenn Sie die Aktion zweimal hintereinander mit den selben Dateinamen ausführen, ohne die Daten dazwischen neu zu laden, gehen die Daten Verloren! Beim ersten mal werden die Daten in die Datei geschrieben und der Speicher gelöscht. Beim
zweiten mal ist der Speicher leer. Die Sicherungsdatei wird überschrieben! 

function TCustomSynEdit.loadUndo(Name_ : String): Integer;

  nach dem laden der Editor - Datei können Sie alle Änderungen so zurückholen,
  als wenn Sie die Datei nie verlassen hätten. So lange die maximale Anzahl von Undo nicht überschritten wird, gilt das    auch für lange zurückliegende Aktionen, selbst wenn Synedit mehrfach neu gestartet und beendet wurde.

Im Erfolgsfsall geben die Funktionen 0 zurück.
- 1 bedeutet, das, das Verzeichnis nicht existiert oder schreibgeschützt ist! 
- 2 bedeutet, das, die Datei zwar geöffnet werden konnte aber keine Date enthält! 

 function GetSaveItem(ASaveRec: TSynEdSaveRec):TSynEditUndoItem;

  wird von LoadUndo() intern verwendet, und ist nur zu meinen Testzwecken noch public

property UndoList: TSynEditUndoList read fUndoList;
property RedoList: TSynEditUndoList read fRedoList;

  nur zu meinen Testzwecken noch als public

UndoList und RedoList enthalten Objecte vom Type TSynEditUndoGroup.

TSynEditUndoGroup enthalten theoretisch die Objecte vom Type TSynEditUndoItem.
In der Praxis sind es aber 14 verschiedene Objecttypen, die von TSynEditUndoItem abgeleitet wurden !

Diese abgeleiteten Objecte sind in den Dateien: SynEditTextBuffer, SynEditTextTrimmer und SynEdit.

Diese abgeleiteten Objecte erhielten jeweils eine neue function GetSaveRec: TSynEdSaveRec;
Die Funktionen geben einen Record vom Type TSynEdSaveRec zurück, der dann in der Sicherungsdatei gespeichert wird.

Da die Typedeklarationen der abgeleiteten Objecte sich im Implementationsteil befanden, war kein Zugriff möglich. deshalb wurden die Typedeklarationen in denDeklarationsteil verschoben.

TSynEdSaveRec ist in der unit SynEditTextBase deklariert , in der auch TSynEditUndoItem deklariert ist.
TSynEditUndoItem erhiel die abstracte Methode von GetSaveRec.

Wie kann es genutzt werden ?

- Lazarus starten
- Formular mit TSynedit verwenden und umschalten auf Quelltext.
- Rechte Maustaste auf Tsynedit und find deklaration von TSynedit.
- Maus über Tabelator von Datei Synedit - der Quellpfad der Datei wird angezeigt.
- alle Dateien in diesem Pfad sichern !!! und durch neue Dateien ersetzten.
- Das können Sie ggf. nur mit Administratorrechten !
- Lazarus Menu - Package - geladenes Package laden.
- Synedit auswählen
- in neuem Fenster Kompilieren klicken.
- Die Dateien sollten fehlerfrei kompiliert werden und in der IDE sollte der geänderte Inhalt von Synedit sichtbar sein.


Unter Demo finden Sie eine ganz eifache Anwendung.
Verändern Sie unbedingt die vorgeschlagenen Datei- und Pfadnamen in reale Werte. 
In der Demo wird nur die Verwendung gezeigt. Es findet aber keine Überprüfung statt, ob die Pfade wirklich bestehen und ob die Berechtigung zum Schreiben vorhanden ist ! Es werden auch keine Pfade angelegt !

Über den Rückgabewert erfahren Sie ob die Aktion erfolgreich war.




