Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#22

AW: Image (Canvas) Rückgängig Funktion

  Alt 20. Mär 2011, 19:39
Du kannst freilich Array's kopieren
Delphi-Quellcode:
// Fixe Array's völlig unproblematisch
procedure TForm1.Button1Click(Sender: TObject);
type
r=Record
 c:Char;
 f:Byte;
end;
TArr=array[0..9,0..9] of r;
var
 a,b:TArr;
 i,j:Integer;

begin
  for I := 0 to 9 do
    for j := 0 to 9 do
      begin
      a[i,j].c := Char(Ord('0') + i*10 + j) ;
      a[i,j].f := i*10 + j;
      end;
  b := a;
  Caption := b[2,2].c +'-'+ IntToStr(b[2,2].f)
end;

// Asymetrische Array, eben Iterativ
procedure TForm1.Button2Click(Sender: TObject);
type
r=Record
 c:Char;
 f:Byte;
end;
TArr = Array of Array of r;
var
 a,b:TArr;
 i,j:Integer;
 Function CopyMyArray(a:TArr):TArr;
    var
      x,y:Integer;
    begin
      SetLength(Result,High(a) + 1);
      for x := Low(a) to High(a) do
        begin
          SetLength(Result[x],High(a[x])+1);
          for y := Low(a[x]) to High(a[x]) do Result[x,y] := a[x,y];
        end;
    end;
begin
  SetLength(a,10);
  for I := Low(a) to High(A) do
    begin
       SetLength(a[i],i);
       for j := Low(a[i]) to High(a[i]) do
          begin
          a[i,j].c := Char(Ord('0') + i*10 + j) ;
          a[i,j].f := i*j;
          end;
    end;
  b := CopyMyArray(a);
  if (a[4,2].c=b[4,2].c) and (a[4,2].f=b[4,2].f) then Showmessage('Passt scho...')

end;

Trotzdem bin ich sicher dass Dir meine eigentlich Struktur langt und den Speicherbedarf minimiert.
Wenn jedes Zeichen erfasst wird und der Benutzer nach 100 Schritten zu Schritt 98 zurückkehren will, leerst Du Dein Grundarray und spielst die Aufzeichnungen bis Schritt 98 wieder ein ... und so weiter...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat