Accueil > > > AAPPEND() AJOUTE LE CONTENU D'UN TABLEAU À UN AUTRE
AAPPEND() AJOUTE LE CONTENU D'UN TABLEAU À UN AUTRE
Information sur la source
Description
Ce code illustre la façon dont VFP gère les tableaux. Un tableau peut comporter 1 ou 2 dimensions maximum. VFP gère les tableaux par éléments séquentiels, aussi ce code est nécessaire pour ajouter des lignes à un tableau à 2 dimensions. aLen() permet de connaître le nombre de lignes [et de colonnes] d'un tableau Ce code illustre aussi la fonction type() qui permet de vérifier précisément les paramètres passés.
Source
- FUNCTION aAppend && Ajoute le contenu d'un tableau à un autre
- LPARAMETERS ;
- ta1,; && @ tableau résultat
- ta2 && @ tableau ajouté au tableau ta1
- LOCAL lnResult && nombre de lignes du tableau résultat
- m.lnResult = 0
-
- EXTERNAL ARRAY ta1, ta2 && pour le gestionnaire de projet
-
- * Si des tableaux ont bien été passés
- LOCAL llParms
- m.llParms = NOT (Type('m.ta1[1]') == 'U' OR Type('m.ta2[1]') == 'U')
- ASSERT m.llParms MESSAGE 'Les deux paramètres ta1 et ta2 doivent être des tableaux'
- IF m.llParms
-
- * Si le second tableau a des lignes
- LOCAL lnRow1, lnRow2
- m.lnRow1 = Iif(laEmpty(@m.ta1) , 0, Alen(m.ta1, 1)) && alen(m.ta1,1) Fonctionne pour 1 et 2 dimensions
- m.lnRow2 = Iif(laEmpty(@m.ta2) , 0, Alen(m.ta2, 1))
- m.lnResult = m.lnRow1 + m.lnRow2
- IF m.lnRow2 > 0
-
- * Ajuster le nombre de lignes et de colonnes du résultat
- LOCAL lnCol1, lnCol2
- m.lnCol1 = Alen(m.ta1, 2) && 0 si 1 dimension
- m.lnCol2 = Alen(m.ta2, 2)
- m.lnCol1 = Max(m.lnCol1, m.lnCol2)
- DIMENSION m.ta1[m.lnResult, m.lnCol1]
-
- * Pour chaque ligne du second tableau
- LOCAL lnRow, lnCol
- FOR m.lnRow = 1 TO m.lnRow2
-
- * Si un des tableaux est à une dim.
- IF m.lnCol1 * m.lnCol2 = 0
- m.ta1[m.lnRow1 + m.lnRow] = m.ta2[m.lnRow]
-
- * Sinon (les 2 tableaux sont à 2 dimensions)
- ELSE
- FOR m.lnCol = 1 TO Min(m.lnCol1, m.lnCol2)
- m.ta1[m.lnRow1 + m.lnRow, m.lnCol] = m.ta2[m.lnRow, m.lnCol]
- ENDFOR
- ENDIF
- ENDFOR
- ENDIF
- ENDIF
-
- RETURN m.lnResult
-
- *===================================================================
- FUNCTION laEmpty && Ce tableau est vide
- LPARAMETERS ta && @ Tableau à vérifier
- LOCAL llResult
- m.llResult = NULL
-
- EXTERNAL ARRAY ta
-
- LOCAL llParms
- m.llParms = NOT Type('m.ta[1]') == 'U'
- ASSERT m.llParms MESSAGE 'Le paramètre ta doit être un tableau'
- IF m.llParms
- m.llResult = Alen(m.ta) = 1 AND Vartype(ta[1]) = 'L' AND ta[1]=.F.
- ENDIF
-
- RETURN m.llResult
FUNCTION aAppend && Ajoute le contenu d'un tableau à un autre
LPARAMETERS ;
ta1,; && @ tableau résultat
ta2 && @ tableau ajouté au tableau ta1
LOCAL lnResult && nombre de lignes du tableau résultat
m.lnResult = 0
EXTERNAL ARRAY ta1, ta2 && pour le gestionnaire de projet
* Si des tableaux ont bien été passés
LOCAL llParms
m.llParms = NOT (Type('m.ta1[1]') == 'U' OR Type('m.ta2[1]') == 'U')
ASSERT m.llParms MESSAGE 'Les deux paramètres ta1 et ta2 doivent être des tableaux'
IF m.llParms
* Si le second tableau a des lignes
LOCAL lnRow1, lnRow2
m.lnRow1 = Iif(laEmpty(@m.ta1) , 0, Alen(m.ta1, 1)) && alen(m.ta1,1) Fonctionne pour 1 et 2 dimensions
m.lnRow2 = Iif(laEmpty(@m.ta2) , 0, Alen(m.ta2, 1))
m.lnResult = m.lnRow1 + m.lnRow2
IF m.lnRow2 > 0
* Ajuster le nombre de lignes et de colonnes du résultat
LOCAL lnCol1, lnCol2
m.lnCol1 = Alen(m.ta1, 2) && 0 si 1 dimension
m.lnCol2 = Alen(m.ta2, 2)
m.lnCol1 = Max(m.lnCol1, m.lnCol2)
DIMENSION m.ta1[m.lnResult, m.lnCol1]
* Pour chaque ligne du second tableau
LOCAL lnRow, lnCol
FOR m.lnRow = 1 TO m.lnRow2
* Si un des tableaux est à une dim.
IF m.lnCol1 * m.lnCol2 = 0
m.ta1[m.lnRow1 + m.lnRow] = m.ta2[m.lnRow]
* Sinon (les 2 tableaux sont à 2 dimensions)
ELSE
FOR m.lnCol = 1 TO Min(m.lnCol1, m.lnCol2)
m.ta1[m.lnRow1 + m.lnRow, m.lnCol] = m.ta2[m.lnRow, m.lnCol]
ENDFOR
ENDIF
ENDFOR
ENDIF
ENDIF
RETURN m.lnResult
*===================================================================
FUNCTION laEmpty && Ce tableau est vide
LPARAMETERS ta && @ Tableau à vérifier
LOCAL llResult
m.llResult = NULL
EXTERNAL ARRAY ta
LOCAL llParms
m.llParms = NOT Type('m.ta[1]') == 'U'
ASSERT m.llParms MESSAGE 'Le paramètre ta doit être un tableau'
IF m.llParms
m.llResult = Alen(m.ta) = 1 AND Vartype(ta[1]) = 'L' AND ta[1]=.F.
ENDIF
RETURN m.llResult
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
FONCTION GENERIQUE QUI RETOURNE UN TABLEAU [ par johnmary ]
Bonsoir à tous,J'ai créé une fonction dans un module intitulé iofonctions.prg.FUNCTION FolderListe()PARAMETERS DrivePathDIMENSION ThePaths(1024)Inc=1
prob avec un append from [ par gregorian ]
Bonjour, J'ai été voir cette fonction, et il me semble qu'elle répond tout a fait à mes attentes sauf un petit problème.Donc,
probleme sur append [ par ducker88 ]
Bonjour a tous, voici mon soucis, je voudrais copié les enregistrement d'une table A vers une table Bj'utilise donc la fonction append from;Pour
scatter memvar [ par titi66 ]
bonjour je bascule un application dév en fox pro 6 vers Fox pro 9je rencontre un pb avec scatter memvar : dans un form, j'ai un tableau public d&
dll et tableau de caractères [ par medisys ]
Bonjour, je dois déclarer dans mon application une fonction 'GetNom' de dll qui renvoie un tableau (taille 30) de caractères. Comment effectuer la d
passage d'un tableau en param [ par gregorian ]
Bonjour à tous, Voici mon souci. Dans un projet, je déclare des tableaux en PRIVATE.Ces tableaux doivent être rempli via une requete SQL (select <c
Déclaration tableau [ par ducker88 ]
Bonjour à tous,J'aimerai déclaré un tableau au sein d'une classe, pour ce faire j'utilise la fonction "Editer propriété méthodes" de foxpro. J'arrive
|
Derniers Blogs
[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante [ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre
Forum
RE : TXT VERS DBFRE : TXT VERS DBF par MichelAtoutFox
Cliquez pour lire la suite par MichelAtoutFox RE : TXT VERS DBFRE : TXT VERS DBF par MichelAtoutFox
Cliquez pour lire la suite par MichelAtoutFox
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|