[Tableau] copie d'un tableau

ffomnislash Messages postés 26 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 26 août 2006 - 9 nov. 2005 à 08:40
ffomnislash Messages postés 26 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 26 août 2006 - 10 nov. 2005 à 09:09
hello.



Je erncontre un petit problème pour la copie d'un buffer dans un tableau.



Buffer: PByte

Buffer1: Array of Byte



J'aimerais donc pouvoir copier le Buffer dans Buffer1.



Le problème est que je ne peut pas faire Buffer[??]. Le compilateur me dit qu'un type tableau est requis.



D'où la question, comment je peut faire pour parcourir Buffer ?

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 nov. 2005 à 14:51
procedure PushIn(buffer : PByte);

begin

// ajoute un enregistrement a Buffer1

SetLength(Length(Buffer1)+1);

// place la valeur de Buffer dans Buffer1[n]

Buffer1[length(buffer1)] := ^Buffer;

end;





PByte est un Pointeur sur Byte (lol 15ans de pascal et ça me ferat toujours rire),

donc pour placer un PByte dans un Byte il faut mettre le caractere "^" devant l'identificateur de la variable Pointeur.



tu aurait egalement pus faire Buffer1 en "Array of PByte".

mais pour lire la valeur N du tableau il aurait fallut faire pareil... Byte := ^Buffer1[n];
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 nov. 2005 à 14:53
ooop rectification :



Buffer1 [ length( buffer1 ) - 1 ] := ^Buffer;
0
ffomnislash Messages postés 26 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 26 août 2006
9 nov. 2005 à 15:41
merci de ton aide mais je rencontre toujours un probleme.

Je n'ai pas précisé que Buffer est un tableau de Byte, enfin facon de parlé tableau.

La variable pointe sur une zone mémoire representant une image. Je connait sa taille.



Donc a priori il faut que je j'allour Buffer1 avec la taille de Buffer avec setlenght.

Apres il faudrait que je boucle pour copié les valeurs.



Voicice que j'ai deja esayé de faire, Buffer1 est un membre de la classe C



C.CopieBuffer1( Buffer : PByte; Size : Integer );

var

i:integer;

begin

test buffer != NULL && Size>=0

//la copie

i:=0;
i:=0;

SetLength(Buffer1,Size) ;

while i < Size do begin

Buffer1[i] := ^Buffer[i] //incompatible types: byte & char

end;

end;



Mais voila j'ai une erreur de type incompatible :/.
0
ffomnislash Messages postés 26 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 26 août 2006
9 nov. 2005 à 15:44
On ne peut pas éditer ces messages ?

J'ai fait beaucoup de fautes de frappe^^



Sinon j'ai aussi oublié un Inc(i) mais vu que ca ne compile pas ce n'est pas encore très génant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
9 nov. 2005 à 20:23
Si tu dis que Buffer pointe sur un tableau de Byte, pourquoi ne par le déclarer ainsi:
Buffer: PByteArray;
Et comme cela, tu peux déférencer le pointeur sans problème, Delphi s'y retrouve.

@ ++ Flo

Si tu ne te plantes pas ......
tu ne poussera jamais
0
ffomnislash Messages postés 26 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 26 août 2006
10 nov. 2005 à 09:09
le probleme c'est que j'utilise un composant qui permet, en
utilisant directshow, de récupérer l'image renvoyée par une webcam et
cette image est dans un Pbyte. J'ai besoin d'effectuer des
transformation/calcul sur cette image c'est pourquoi j'aimerais la
convertir en tableau pour que ce soit plus facile^^.



Ceci dit je vais voir ce que je pourrait faire avec un Tbitmap, la
copie du Pbyte dans le tbitmap je l'ai alors peut être que ca serait
une bonne idée ;p
0
Rejoignez-nous