Delphi copie de la Mémoire avec l'inscription à un autre Enregistrement

Je vais avoir des problème avec la logique. Je n'ai aucune idée de comment copier un enregistrement à un autre enregistrement dans Delphi.

TypeA = record
  value1 : word;
  value2 : word;
  value3 : word;
  end;

TypeB = record
  b1 : byte;
  b2 : byte;    
  end;

J'ai mes deux dossiers TypeA et TypeB. Pour exemple, j'ai découvert que les données dans TypeA enregistrement est appartiennent à TypeB enregistrements. Remarque: TypeA a plus de Longueur de Données.

Question: Comment puis-je copier TypeA de la mémoire et de la placer dans TypeB record?

CopyMemory(@TypeA, @TypeB, Length(TypeB))

Quand j'ai essayé CopyMemory et ai une erreur (Incompaible types).

PS: je ne veux pas de copie ou de l'affecter comme ci-dessous.

TypeB.b1 := TypeA.valeur1 && $FF;

TypeA et TypeB sont que des exemples, des enregistrements. La plupart des thecases, enregistrement TypeA et TypeB peut contenir plusieurs enregistrements et il
sera plus difficile de les attribuer forme TypeA et d'attribuer à la TypeB enregistrement.

Merci d'avance

----Outre la question:

Est-il un moyen de copier Delphi record de tableau d'Octets et comment? Si il y est,

  • TypeA record de Tableau d'Octets
  • Tableau d'octets de Type B

Sera cette logique de travail?

Votre question n'a aucun sens. Vous essayez de copier la moitié d'un dossier dans un autre dossier? Vous pourriez avoir besoin pour copier plusieurs demi-dossiers dans plusieurs autres dossiers? Vous devez préciser votre question, car il semble être assez étrange (et sans réplique, car il n'est pas clair ce que vous voulez faire).
Merci pour votre commentaire. Je ne suis pas très bien moi-même comment obtenir de la logique aussi. J'ai eu droit à l'information est TypeA enregistrement de données appartenant à TypeB enregistrement de données. C'est mal placée. Je veux récupérer les données et les enregistrer dans TypeB.
Essayez Move() au lieu de CopyMemory() par exemple: Move(TypeA, TypeB, SizeOf(TypeB));
Pourquoi? Les deux MoveMemory et CopyMemory sont mis en œuvre comme Move(Source^, Destination^, Length);
Vous avez deux problèmes. Vous essayez d'obtenir l'adresse de types. Vous devez déclarer quelques variables. Et vous avez besoin d'utiliser sizeof plutôt que la longueur.

OriginalL'auteur sMah | 2012-02-23