jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 21 janv. 2005 à 12:56
Alors pour ce qui est de la place je ne peux pas trop te dire. C'est sur que ca prendra de la place mais combien je ne sais pas.
Mais plutot que de déclarer des tableaux enormes alors que si ca se
trouve tu vas utilser que 10 positions sur les 32767 pourquoi ne pas f
aire un tableaux dynamiques comme cela :
var
Ligne : Array of TLigne;
Ensuite quand tu veux ajouter un item dans ton tableau tu fais un SetLength comme ceci :
SetLength(Ligne,1) //pour saisir Ligne[0]
SetLength(Ligne,2); //Te permettra de saisir Ligne[0] et Ligne[1]
....
ect
Pour la dernier question elle est pas trop en rapport avec ta question
de depart alors pose une nouvelle demande sur le forum. Perso je ne
sais pas.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 21 janv. 2005 à 14:53
Re,
- 1 -
Pour la place, il faut multiplier la taille d'un enregistrement par le
nombre d'enregistrements, soit ici 7 entiers (32 bits chaque) et un
TColor (32 bits aussi) soit 8x4 = 32 octets.
Mais..... c'est pas toujours aussi simple, car les données sont en
général allignées, c'est à dire qu'elles commencent à une adresse
multiple de 2 ou 4. Une donnée de type byte ou boolean prend alors 16
ou 32 bits !
Si on désire compacter un enregistrement on déclare alors son type comme suit :
Type
TLigne = Packed Record
......
end;
Ce qui n'est toutefois pas conseillé pour des problèmes de vitesse et de compatibilité (voir aide Delphi sur mot Packed)
Utilité : Relire un fichier d'enregistrement ancien (turbo Pascal par ex.) ou la directive Packed etait implicite (voire l'alignement était sur deux octets et pas quatre).
- 2 -
Si tu rajoute un bitmap dans ton type record, il ne prendra que la
place d'un pointeur (32 bits aussi). Ce n'est que quand tu le créeras
(car il faut le créer), et en particulier quand tu définiras ses
dimensions, qu'il commencera à prendre réellement de la place.
- 3 -
Pour dessiner un rectangle sans intérieur (rien que le contour), il
faut mettre la propriété Style de la brosse du canvas à bsClear
(Canvas.Brush.Style :=bsClear);
- 4 -
Et pi, si t'est content des réponses, tu fais comme JPM77 il a écrit en gros et en bleu
cs_TkILLA
Messages postés31Date d'inscriptionjeudi 8 avril 2004StatutMembreDernière intervention16 mars 2005 21 janv. 2005 à 11:15
Clap clap clap :)
J'ai une autre question ayant rapport avec ce topic :
Est ce que si je fais Ligne: array [0..32767] of Tligne ca prend bcp de place? Je me rends pas bien compte.
Je vais créer un Trectangle de la meme manière, en y ajoutant un Tbimap me permettant de stocker l'image "écrasée" par le tracé du rectangle. Si je fais un tableau de 32768 Trectangle, est ce que ça va prendre 32768 Tbitmap, ou il faudra que je les crée (Rectangle[i].SauveFond.create, puis definition largeur hauteur etc..)?
Enfin dernière question : La methode rectangle du canvas d'un Tbitmap efface la surface du rectange, ce qui fait que s'il yavait une ligne derrière elle est effacée. Ya un moyen de faire en sorte que ca ne s'efface pas?
Merci bcp pour les réponse, je validerai une fois chez moi car là je n'ai pas delphi