Hallo nochmal,
ich bin noch etwas unsicher und frage lieber nochmal nach. Entschuldigt die dumme Frage.
Zitat:
leerst Du Dein Grundarray und spielst die Aufzeichnungen bis Schritt 98 wieder ein
Mein Array kann ich doch indem ich den Ausgangszustand herstelle, nicht?
Wie spiele ich dann die Schritte 1-98 wieder auf?
EDIT: (Ich komme da total durcheinander, weil ich ja X und Y Werte für die Buchstaben habe... aber ich denke Du oder jemand anders kann mir da weiterhelfen =D)
Ich hab es so gemacht, doch es ist irgendwo was falsch:
var Chronozaehler : integer = 0;
Bei jeder Veränderung:
Delphi-Quellcode:
SetLength(TChronologieArray ,High(TChronologieArray )+2); //warum eigentlich +2? Nicht +1?
Chronozaehler := High(TChronologieArray);
TChronologieArray[Chronozaehler].attribut := buchstabe[PositionZeile,PositionSpalte].attribut;
TChronologieArray[Chronozaehler].X := PositionZeile;
TChronologieArray[Chronozaehler].Y := PositionSpalte;
Auf Druck der Undo-Taste:
Delphi-Quellcode:
if Chronozaehler > 0 then
Chronozaehler := Chronozaehler-1;
for i := 0 to AnzahlZeilen do
for n := 0 to AnzahlSpalten do
begin
buchstabe[i,n].Zeichen := ' ';
buchstabe[i,n].attribut := 0;
end;
for i := Low(TChronologieArray) to Chronozaehler do
buchstabe[TChronologieArray[i].X,TChronologieArray[i].Y].Zeichen := TChronologieArray[i].Zeichen;
PositionZeile := TChronologieArray[Chronozaehler].X;
PositionSpalte := TChronologieArray[Chronozaehler].Y;
Ich finde es funktioniert auch recht gut, aber unerklärlicherweise rutscht bei ersten Undo einfach alles eine Spalte nach rechts und der letzte Buchstabe verschwindet, also:
aus
Hallo[] wird
_Hall[]. ([] = Cursor)
Beim zweiten mal ist es dann so wie es soll.
Aus
_Hall[] wird
_Hal[] ...
FG Dunkelbunt