Wie kopiert man ein Array?

8

Ich habe so ein grundlegendes Problem in Delphi, ich kann es nicht lösen.

Mein Code:

Hinweis: DataR ist lokal in den folgenden Methoden, aber normalerweise ist es eine Klasse var.Nur für das Konzept ist es lokal.

%Vor%

Dies wird kompiliert, aber nach Move () wird DataR = nil ausgeführt.

Zweiter Versuch:

%Vor%

Dies kompiliert überhaupt nicht. Fehler in der dritten Zeile (DataR: = Kopieren (Eingabe ....) sagt "Inkompatible Typen".

Wo ist das Problem? Sie sind alle Bytearray!

    
Ivan Prodanov 13.07.2009, 12:42
quelle

4 Antworten

7

Warum nicht FOR verwenden?

%Vor%

BTW: Wenn Sie Arrays als Parameter übergeben möchten, sollten Sie sie als Typ deklarieren, zB:

%Vor%

und verwende TMyArray als Parametertyp.

Bearbeiten: Ich wurde über einen niedrigeren Wert informiert. In meinem ursprünglichen Beitrag war es für i: = 0, aber i: = Low (Eingabe) ist sicherer und reiner.

    
smok1 13.07.2009, 12:44
quelle
8

probiere das

aus %Vor%     
test 13.07.2009 13:29
quelle
2

Versuchen Sie:

%Vor%     
Roee Adler 13.07.2009 12:53
quelle
1

Die Move-Prozedur verschiebt keinen Speicherbereich. Es kopiert Count Bytes. Hiermit erhalten Sie zwei verschiedene identische Arrays: Input und DataR.

%Vor%

P. s. Bei statischen Arrays können Sie SizeOf (Input) anstelle von SizeOf (Byte) * Length (Input) verwenden. Anstelle von Byte könnte anderer Datentyp sein.

    
Alexander 20.11.2012 21:03
quelle

Tags und Links