Décalaration d'un tableau [Pascal] - Delphi/Pascal - Programmation
Marsh Posté le 19-12-2005 à 11:44:22
Twister a écrit : Bonjour, |
je me rappelle plus en pascal
mais c'ets pas un truc du genre
array tab[10][10]
oublie ce que je viens d'ecrire j'avais aps bien lu ta question
mais je pense qu'apres avoir recuperé tes valeurs i et j rentré par l'utilisateur tu declare ton tableau avec ces valeurs :
ByteArray = array[0..i][0...j] of Byte;
Je crois avoir vu un truc comme ca sur le net
mais j'y connais rien en pascal
Marsh Posté le 19-12-2005 à 11:47:00
Pascal etant capable de gerer la memoire dynamiquement, ou est le probleme?
Il te faut utiliser les pointeurs.
Marsh Posté le 19-12-2005 à 12:23:54
En "vrai" pascal, il ne me semble pas que ce soit possible.
En delphi, et je croi dans les version "recente" du turbo pascal, tu fait comme suis:
type
MonTableau = array of TypeQuelconque
...
procedure MaProcedure (taille:integer);
begin
SetLength(MonTableau,taille);
end;
Marsh Posté le 19-12-2005 à 15:16:10
Merci pour vos reponse.
Je ne vois pas comment les pointeurs peuvent m'aider, pourais tu m'expliquer?
Marsh Posté le 19-12-2005 à 23:10:55
Ca depend ce que tu veut faire. Les plus simple sont la liste chainé(pour un accées séquentiel) ou du tableau de pointeur(pour enregistrement de plusieur Ko)...
Y'a bien une centaine de structure plus ou moins compliquée... Faut voir ce que tu met dans ton tableau et ce que tu veut en faire (acces sequentiel/aléatoire, remplissage en une fois/au fur et a mesure, ect....).
Rien que ce sujet peut prendre un an à la fac
Marsh Posté le 21-12-2005 à 18:34:45
Bonsoir, j'ai également une question a propos des tableaux a deux dimmension:
ex : Tab = array of array of ...;
Je ne comprend pas comment les utiliser !!
déclarer la longueur ? setlength( )
connaitre la longueur : length( )
écrire, lire dedans , ect ...
Marsh Posté le 21-12-2005 à 21:48:07
De mémoire tu as 2 possibilités :
Par exemple pour un tableau 2d "rectangulaire" :
var
Tab: array of array of Integer;
...
SetLength(Tab, 10, 20);
On accède aux elément avec
Tab[0, 0] ... Tab[9, 19] ou bien Tab[0][0] ... Tab[9][19]
Tab.Length renvoie 10
Tab[0].Length renvoie 20
On peut aussi faire des tableaux non rectangulaire par exemple :
SetLength(Tab, 10);
for I := 0 to Tab.Length - 1 do
SetLength(Tab[I], I + 1);
Crééra un tableau :
Tab[0, 0]
Tab[1, 0] Tab[1, 1]
...
Tab[9, 0] ... Tab[9, 9]
Marsh Posté le 23-12-2005 à 00:44:44
Merci, j'ai encore besoin d'une petite précision :
est-ce qu'il existe un moyen de d'enregistrer un tableau dynamique dans un fichier d'enregistrement ?
ex :
Type
TElement = record
NomElt : ShortString;
Param : Array of Double;
end;
TFileElt = File of TElement;
à la compilation j'ai l'erreur suivante :
"le type bidule necessite une finalisation : non autorisé dans type fichier"
est-ce qu'il ya une astuce pour contourner ce probleme, sans devoir utiliser un tableau non dynamique ?
Marsh Posté le 23-12-2005 à 08:47:00
Un record a une taille fixe. Donc, si tu reusissais a enregister tes records(sans une procedure spécifique), tout ce que tu enregistrerais, ce serait les pointeur de tableaux.
Marsh Posté le 19-12-2005 à 11:23:38
Bonjour,
Je voudrais crée un tableau dont les dimensions sont fixé par l'utilisateur.
Je demande donc a l'utilisateur d'entrer les deux borne du tableau dans les variable i et j.
Mais le probleme c'est que je dois déclarer le tableau au debut du programme en rentrant sa taille.
Comment faire?
Merci