[Delphi] Kopiowanie do tablicy zawartości innej

0

Witam. Wiem że moge w pętli lecieć po rekordach i kopiować dane z poszczególnych pól, ale jestem ciekaw czy można to zrobić szybciej. Mam coś takiego:

type
 TBaza = packed record
   NumerID: Integer;
   Dzial: Byte;
   Towary: Array of ShortString;
end;

const
 Komplet: Array[0..3] of ShortString = ('Towar1','Towar2','Towar3','Towar4');

var
 Baza: Array of TBaza;

Takich stałych mam więcej i w zależności od potrzeby chcę sobie przypisać, czyli:

begin
  SetLength(Baza, Length(Baza)+1);
  Baza[High(Baza)].NumerID := 4;
  Baza[High(Baza)].Dzial := 2;
  SetLength(Baza[High(Baza)].Towary, Length(Komplet);
  Baza[High(Baza)].Towary := Komplet;
end;

Tylko że przy Baza[High(Baza)].Towary := Komplet; wywala mi że niekompatybilne typy. Próbowałem przez

Baza[High(Baza)].Towary := Copy(Komplet, 0, Lenght(Komplet));

... ale też się nie da, sprawdza się tylko w przypadku tej samej tablicy (przydatne przy usuwaniu rekordów) - Baza[High(Baza)].Towary := Copy(Baza[High(Baza)].Towary, 0, Lenght(Komplet)-1).
Tak więc moje pytanie brzmi: Czy jest jakaś funkcja w delphi co szybko skopiuje zawartość całej tablicy do drugiej? Jedyne co mi przychodzi do głowy to użyć TMemoryStream.

0

no i nic dziwnego bo to dwa zupełnie różne typy

0

tutaj muszisz wejsc pod tablice tak to nazwe
Baza[High(Baza)].Towary := Komplet;
towary to tez tablica i komplet to tez tablica
dajesz petle for I:=0 to high(komplet) do
Baza[High(Baza)].Towary[i] := Komplet[i]; o to chdozi?

0

no i jeszcze jedno petle przy kopiowaniach nie sa takie wolne, czesto szybciej sie przerabia kilka tablic niz rysuje grafike w czasie rzeczywistym, pomimo skomplikowanego kodu i przeksztalcen

0
Misiekd napisał(a)

no i nic dziwnego bo to dwa zupełnie różne typy

No tak ale oba to w końcu tablice tylko że jedna to stała a druga dynamiczna (chociaż próbowałem z dwiema dynamicznymi i też sie nie dało), więc myślałem że da sie jakoś przenieść zawartość. No cóż, zostane przy pętlach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1