begin process at 2010 02 10 00:07:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Arguments d'une procédure/fonction restreints


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

Arguments d'une procédure/fonction restreints

mardi 26 septembre 2006 à 17:21:40 | Arguments d'une procédure/fonction restreints

Slander

Bonjour à tous et toutes...

Me voilà devant un petit problème et je voudrais savoir si il existe une solution pour le résoudre...

Code de mon programme:
procedure AjouterChoix(Choix: array of string; Index: integer = 0);  // Cette ligne ne pose aucun problème...
procedure AjouterSousChoix(SousChoix: array of array of TObject; Index: integer = 0);  // Ici le compilateur me done une erreur !


L'erreur est la suivante:
[Error] MonFichier.pas(74): Identifier expected but 'ARRAY' found

Et le curseur est placé juste après le 2ème "array" de la ligne...
Est-il possible de passer en argument une array dynamique multiple sans passer par une solution dans le style:

TMonArray = array of array of TObject;
procedure AjouterSousChoix(SousChoix: TMonArray; Index: integer = 0);  // La ligne qui posait problème avant...


Je vous le demande ??

Slander.
mardi 26 septembre 2006 à 17:40:50 | Re : Arguments d'une procédure/fonction restreints

elguevel

TMonArray = array of array of TObject Mhh Mhhh ...

Pourquoi ne pas utiliser TList ou mieux TObjectList ?


 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
mardi 26 septembre 2006 à 19:01:41 | Mon cher ElGuevel...

Slander

Tout d'abord merci de cette réponse rapide

Mais là ou je reste perplexe, c'est ou tu me suggère d'utiliser une TObjectList (qui pourrait etre considérée comme une liste d'objets donc une "array of TObject") alors que je souhaite utiliser une array of array of TObject ?!

Peut-être faisais-tu allusion à un genre de "array of TObjectList" ?

Dans ce cas je te suis très volontier !

Mais je souhiterai pouvoir passer mes argument comme je le ferais pour une simple array à savoir:
AjouterChoix(['Choix 1', 'Choix 2', 'Choix 3']); // Fonctionne parfaitement...
et
AjouterSousChoix([[Objet10, Objet11], [Objet20, Objet21, Objet22], [Objet30]]); // Impossible de savoir vu l'erreur précédente...

J'espère être suffisament clair dans mes propos... Et si vous avez une solution ou un conseil, je suis preneur...

PS: Je rappel que je sais comment faire en passant par des Types mais je voudrai savoir si c'est possible de le faire tel que je le demande, pour une question de simplicité de passage d'arguments... voilà je vous laisse le clavier maintenant...

Slander.

mardi 26 septembre 2006 à 19:38:57 | Re : Arguments d'une procédure/fonction restreints

cirec

Membre Club Administrateur CodeS-SourceS
Salut,
"Est-il possible de passer en argument une array dynamique multiple sans passer par une solution dans le style: TMonArray = array of array of TObject;"

à mon avis non mais pourquoi ne pas utiliser TMonArray puisque ca fonctionne ?

@+
Cirec
mardi 26 septembre 2006 à 19:39:54 | Re : Arguments d'une procédure/fonction restreints

elguevel

C'est vrai je n'arrange pas ton problème.

A mon avis il faut que tu crées un nouveau type :
type TonType = array of array of TObject;

Essai voir .....

 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
mardi 26 septembre 2006 à 19:42:37 | Re : Arguments d'une procédure/fonction restreints

elguevel

Tient Cirec et moi avons repondu en meme temps ...  celà confirme la solution ! :-)

 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
mardi 26 septembre 2006 à 20:05:08 | Merci de vos réponses...

Slander

Bon à priori, il n'est pas possible de passer en argument une array of array de quelque chose sans passer par un type :(

Donc je vais quand même écrire ma solution ici pour ceux que ça intéresserait...

[dans Interface]

TArrayOfArrayOfObject = array of array of TObject;

procedure AjouterSousChoix(SousChoix: TArrayOfArrayOfObject; Defaut: integer = 0);

[Dans une procedure quelquonque de Implémentation]

procedure Quelquonque;
var
  TempSousChoix: TArrayOfArrayOfObject;
begin
  SetLength(TempSousChoix, 3, 2);
  TempSousChoix[0, 0] := Label1;
  TempSousChoix[0, 1] := Edit1;
  TempSousChoix[1, 0] := Label2;
  TempSousChoix[1, 1] := Edit2;
  TempSousChoix[2, 0] := Label3;
  TempSousChoix[2, 1] := Edit3;
  AjouterSousChoix(TempSousChoix, 1);
end;

Et celà fonctionne très bien puisque je l'utilise... Donc vous me direz certainement: "BenKestéV'nuNousFaireChierAvecTaQuestionDeMerdeAlors ?"
et je vous répondrais: "Je voulais savoir si on pouvait appeler "AjouterSousChoix" comme ceci directement:"

AjouterSousChoix([[Label1, Edit1], [Label2, Edit2], [Label3, Edit3]], 1);

Domage c'était plus cours :p

Slander.

mercredi 27 septembre 2006 à 19:09:09 | Re : Arguments d'une procédure/fonction restreints

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !



type
  pObject      = ^TObject;
  TObjectPot   = array of pObject;
  TOPMatrix    = array of TObjectPot;

function Poter(const A : array of pObject) : TObjectPot;
var i : integer;
begin
  setlength(result,length(A));
  for i := 0 to high(A) do
      result[i] := A[i];
end;

function Matrixer(const A : array of TObjectPot) : TOPMatrix;
var i : integer;
begin
  setlength(result,length(A));
  for i := 0 to high(A) do
      result[i] := A[i];
end;


begin
  AjouterChoix(
     Matrixer([
Poter([@Label1,@Edit1]),
                Poter([@Label2,@Edit2]),

                Poter([@Label3,@Label4,@Edit3])

     ])
  );
end;





Croc (click me)
mercredi 27 septembre 2006 à 19:26:56 | Hehe !

Slander

Hello !

Bon c'est effectivement une solution de passer par des pointeurs et des fonctions...
Merci de vous être donné la peine de chercher une solution à mon problème !


Bonne prog' @ tous et toutes...

Slander.
mercredi 27 septembre 2006 à 20:50:40 | Re : Arguments d'une procédure/fonction restreints

cirec

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

Avec où sans pointeur ça fonctionne

type
  //pObject      = ^TObject;
  TObjectPot   = arrayof TObject;
  TOPMatrix    = arrayof TObjectPot;

function Poter(const A : arrayof TObject) : TObjectPot;
var i : integer;
begin
  setlength(result,length(A));
  for i := 0 to high(A) do
      result[i] := A[i];
end;

function Matrixer(const A : arrayof TObjectPot) : TOPMatrix;
var i : integer;
begin
  setlength(result,length(A));
  for i := 0 to high(A) do
      result[i] := A[i];
end;


procedure TForm1.Button1Click(Sender: TObject);
begin

     Matrixer([ Poter([SpeedButton1,Edit1]),
                Poter([SpeedButton2,SpeedButton5]),
                Poter([SpeedButton8,SpeedButton7,SpeedButton9])
     ])
  ;
end;


@+
Cirec

1 2

Cette discussion est classée dans : problème, array, index, of, procedure


Répondre à ce message

Sujets en rapport avec ce message

Incompatibilité des chaines [ par Kane ] Bonjour,j'appel une API à qui l'on founit un enregistrement qui possede un parametre array [0.63] of char. Hors je n'arrive pas a faire une affectatio array multidimentionnel dans une procedure [ par yvessimon ] Bonjour?Je souhaite passer en paramètre un tableau type: array of array of extended dans une procédure d'un composant.Je pensai utiliser un pointer Array of procedure, c'est possible ? [ par DeltaFX ] Yo,bande de coderz,Je me pose  un question : j'ai un prog qui utilisele TcyPictureArea de Mauricio, et pour résumer (pour ceux qui connaissent pas), c Codage des entiers [ par Aurel184 ] Bonjour,je développe une interface en Delphi permettant de contrôler par réseau ou port série des vidéoprojecteurs professionnels. Quand j'envoi une c sauvegarder l'index des imprimantes [ par ioda19 ] Bonjour,         J'ai une question à propos des imprimantes et je m'en tire les cheveux.J'ai une application que j'ai fait où l'usager peux configurer Array dynamique [ par vincentstryckmans ] Bonjour, Je souhaite passer comme argument d'une procédure une array dynamique multidimensionnelle. Voici le code : procedure rafraichir_treeRespons Problème de tableau dynamique [ par John Dogget ] Salut à tous. J'écris une procedure dont le but est de transformer une liste de nom du style "nom1,nom2,...,nomN" en tableau dynamique (tableau de cha caster une variable d'un tableau de tableau de tableau [ par justevero ] Bonjour, j'ai du creer 3 types pour attribuer des dimensions differentes a chacunes de mes colonnes de tableau de real type Tableau1= Array of rea index out of date [ par neosystemsteam ] slt tout le monde; j'ai une petite application de gestion de ma biblo des cds; un message d'erreur "Index out of date" s'affiche à chaque lancement. Stocker des array dans un array [ par abidcha ] Bonjour,J"aimerai savoir si on peux stocker des array dans un array en Delphi. Voici le code que j"ai pense mais ca marche pas:Var matMachPer : arra


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,515 sec (3)

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