Delphi - Kopiowanie dynamicznych tablic

Delphi - Kopiowanie dynamicznych tablic
T3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Witam.
Czy jest inny sposób na kopiowanie tablic dynamicznych niż pętlą? Wygooglowałem iż przy pomocy procedury Move można, jednak nie udało mi się to jak na razie. Oto w jaki sposób próbuję i coś nie chce wychodzić:

Kopiuj
type
  TDataStock = packed record
   Data: Pointer;
   Size: Integer;
  end;
  TDataStocks = array of TDataStock;
Kopiuj
function CopyDataStock(var From:TDataStocks):TDataStocks;
begin
 try
  SetLength(Result,High(From));
  Move(From[Low(From)],Result[Low(Result)],High(From));
 except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
 end;
end;
Kopiuj
var
 CC:TDataStocks;
begin
 CC:=CopyDataStock(DataStock);

Dodam iż próbowałem również przy użyciu CopyMemory, jednak wynik ciągle ten sam. Ani to błędu, ani przekopiowanych danych. Właściwie najlepiej byłoby dla mnie 'przenieść' dane z DataStock, do CC, bo tak czy siak po kopiowaniu mam zamiar wyczyścić tablice DataStock.

Proszę o pomoc :)

Btw, mam nadzieję, że nie wywołam jak ostatnim razem wielkiej kłótni x)

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0

A nie powinno być ?

Kopiuj
Move(From[Low(From)],Result[Low(Result)],High(From)*sizeof(TDataStock));
  • Rejestracja: dni
  • Ostatnio: dni
0

SetLength(Result,High(From));

Źle, użyj length.

Move(From[Low(From)],Result[Low(Result)],High(From));

Move(From[0],Result[0],(Length(From)-1)*sizeof(TDataStock));

  • Rejestracja: dni
  • Ostatnio: dni
0

Tfu, błąd, gadałem z ładną przyszłą programistką i byka zrobiłem. (Length(From)-1) => Length(From).

T3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

kAzek - też mnie się tak zdawało, testowałem i nic z tego nie było :)
-123oho - nooooo.. Po raz kolejny oszczędziłeś mi nerwów :) Dzięki !

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.