"Fehler zu wenig Arbeitsspeicher" bzw. wie UNDO deaktivieren?

  • Hallo,

    in einer Tabelle erzeuge ich neue Zeilen an einer gewünschten Position per Zeile.Duplicate.

    Die duplizierte Zeile kann aber gemergte Zellen haben, so dass eine Unterfunktion diese per SplitCell wieder auflöst.

    Das funktioniert bis zum Hinzufügen von ca. 100 Zeilen, dann kommt Meldung "zu wenig Arbeitsspeicher!"

    Es hat sehr lange gedauert, bis ich herausgefunden habe dass da die UnDo-Funktionalität (wpActivateUndo) die Ursache ist!

    Das WPRichtext scheint sich mit dieser aktivierten Option "bis zum allerersten Schritt zurück" alles zu merken ;-)

    Nun die Frage:

    Gibt es eine Möglichkeit, das Undo auf z.B. die letzten 10 Schritte einzuschränken?

    Ciao

    Stefan

    • Offizieller Beitrag

    Die bleiben erhalten - ist natürlich problematisch wenn die Positionen nachher nicht mehr stimmen. Man kann aber Memo.RTFData.UndoClear aufrufen.

    In meinem code (welcher u.a. WPCtrMemo.pas einsehbar ist) mache ich es so:

    Code
     if (wpActivateUndo in EditOptions) then
          Memo.RTFData.UndoBufferSaveCurrentTable(wputChangeTable); 
        Memo.RTFData.UndoDisable;
    try
    .....
    
    finally
        Memo.RTFData.UndoEnable;
    end;

    Das passiert im Kontext des TWPCustomRtfEdit, evtl ist also ein with erforderlich.

    Sicherer als UndoBufferSaveCurrentTable wäre ein Memo.RTFData.UndoStoreComplete welches eine komplette Kopie des Textes anlegt, zu der der Anwender zurückkehren kann.