begin process at 2012 02 11 16:40:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Tableau dynamique, portee des variables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau dynamique, portee des variables

lundi 26 juillet 2010 à 15:14:15 | Tableau dynamique, portee des variables

jderf

Dans une unite j'avais une procedure avec un tableau dynamique en paramêtre (passage du pointeur du tableau sans le out, puisque les tab dyna sont des pointeurs)
Cela fonctionne trés bien.
--------------------------------------------
implementation
{$R *.dfm}

type
Block = record // Type Block
VDebut : integer;
Vfin : integer;
end;

TBlockArray = Array of Block; // Type Tableau dynamique de Block

var
TabBlock : TBlockArray; // Tab dynamique de block

procedure InsertBlock(ValDebut, ValFin : integer; Tableau_Des_Block : TBlockArray);
begin
// Ajout du nouveau Block en fin de tableau
SetLength(Tableau_Des_Block,Length(Tableau_Des_Block) + 1);
Tableau_Des_Block[ High(Tableau_Des_Block) ].VDebut := ValDebut;
Tableau_Des_Block[ High(Tableau_Des_Block) ].Vfin := ValFin;
.../...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//Init des blocs

InsertBlock(45,100, TabBlock);
InsertBlock(40,140,TabBlock);
.../...
end;
end.
---------------------------------------------------


J'ai voulu déplacer toutes la gestion des block dans une unité planning (voir ci-dessous)
J'ai donc ajouter planning dans les uses de l'unit1, mais le passage du tableau ne fonctionne plus.
J'ai donc dans un deuxieme temps modifier la declaration de la fonction pour forcer le passage du pointeur sur le tableau
comme ceci : procedure InsertBlock(ValDebut, ValFin : integer; OUT Tableau_Des_Block : TBlockArray);
Mais là c'est seulement le dernier appel à InsertBlock qui est pris en compte ! Problème de portée des variables sans doute, mais je ne comprend pas.
Merci de votre aide.

unit Planning;

interface

type
Block = record
VDebut : integer;
Vfin : integer;
end;

TBlockArray = Array of Block; // Type Tableu dynamique de Block

procedure InsertBlock(ValDebut, ValFin : integer; Tableau_Des_Block : TBlockArray);

implementation

procedure InsertBlock(ValDebut, ValFin : integer; Tableau_Des_Block : TBlockArray);
begin
// Ajout du nouveau Block en fin de tableau
SetLength(Tableau_Des_Block,Length(Tableau_Des_Block) + 1);
Tableau_Des_Block[ High(Tableau_Des_Block) ].VDebut := ValDebut;
Tableau_Des_Block[ High(Tableau_Des_Block) ].Vfin := ValFin;
.../...
end;
end.

-----------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math, Planning;

type
.../...

implementation
{$R *.dfm}

type
TabBlock : TBlockArray; // Tab dynamique de block

procedure TForm1.FormCreate(Sender: TObject);
begin
//Init des blocs

InsertBlock(45,100, TabBlock);
InsertBlock(40,140,TabBlock);
.../...
end;
end.
--------------------------------
lundi 26 juillet 2010 à 17:54:02 | Re : Tableau dynamique, portee des variables

jderf

Réponse acceptée !
Oups ! C'est pas out, mais var pour le passage par adresse.
Besoin de vacances moi.


Cette discussion est classée dans : end, tableau, integer, block, insertblock


Répondre à ce message

Sujets en rapport avec ce message

passer un tableau de variant à un paramètre Integer [ par manudel ] Je déclare un tableau de Variant : tab := VarArrayCreate([0,100],varVariant);que j'alimente.quand il est alimenté, il a cette forme :1,2,3,4,5,6,7,8, Lecture de fichier [ par trollnumber1 ] TrollBonjours ,mon probleme est de lire le fichier que j'ai créé voici la procedure d'enregistrement que j'ai fait mais je ne sais pas comment faire p Composant... [ par yoghisan ] Bonjour,Voila je suis entrain de m'essayer a la création de composant et pour cela, je suis entrain d'essayer de faire une table de vérité. Le composa Tableau d'objets [ par arianespace2004 ] Bonjour,J'ai un sérieu souci, j'ai écris un object qui a comme membre donné un thread. Jusque là pas de probleme mais voilà, quand je veux faire un ta cacher, hide, process, application, xp [ par Den ] voici un code trouvé sur le web, il devrait permettre de cacher le processus du gestionnaire des taches de XP, je ne sait pas l'utiliseret j'ai déposé TStringGrid + TScrollBox : petit pb de décalage [ par delphi5user ] Bonjour à vous.Je vais essayer d'explique mon problème clairement.J'ai fait un Form avec un TScrollBox, 2 TStringGrid (1 pour les titres, un pour les Convertissent une source [ par tairodel ] TAIROdel Qui je convertissent une source de DOS de Delphi en source de GUI de Delphi program SMTPserver; {$DEFINE Debug} {$IFDEF Debug} &nb Comment passer en revue un tableau de TButton ? [ par jm2mars ] Bonjours à tous !J'ai créée un tableau de TWebBrowser de longueur 15.A Chaque fois que je crée un TWebBrowser je rempli mon tableau avec.Cependant ces probleme quand je creer ma procedure [ par damomospike ] bonjour a tous!voila je voulais apprendre à creer ma propre procedure, en cherchant j'ai a peut prés trouvé se qu'il falait faire mais y me manque que tableau dynamique à deux dimensions dans une classe [ par Koraluv ] Salut à tous!Je suis débutante en delphi et je voudrai créer une classe qui ai comme attribut un tableau dynamique à deux dimentions de TCellule.je l'


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,886 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales