begin process at 2012 02 14 07:58:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Creation dynamique d'objets


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

Creation dynamique d'objets

dimanche 11 juin 2006 à 21:49:34 | Creation dynamique d'objets

mi12ox

Bonjour,
je suis entrain de realiser un petit raytracer et je me trouve en face d'un petit problème lors du chargement de la scène.
j'ai un fichier .ini qui contient les infos concernant la lumière, la caméra et surtout les différents objets qui se trouvent sur la scène.
j'aimerais que mon prog crée dynamiquement mes objets (sans savoir combien ils seront et de quels types).
je précise: j'aurai par exemple dans mon ini la description d'un cube , un plan, deux triangles et un sphère.
j'aimerais pouvoir créer un objet de chaque dans mon programme.
je ne veut que créer des objets dont les classes sont définies à l'avance.
j'ai pensé à un truc du genre:

for i=1 to nombredobjets
    if type=sphère then
       dim objet(i) as sphere
    elseif type=cube then
       dim objet(i) as cube
    elseif  ...
    end if
next

une fois ces ojets crées je n'aurai pas de blème pour les exploiter, mais c'est la création qui plante, il me dit qu'il attend une constante.
je suis sous vb 6.
quelque un aurait il une petite idée?

merci d'avance

amicalement
miro
lundi 12 juin 2006 à 09:26:37 | Re : Creation dynamique d'objets

Polack77

    Heeeeeee, tout dabort je tien à dire que je n'ai pas VB6 sous la main.
    Mais il me semble possible de crée des tableaux de taille dynamique avec des types de données personalisés (ce qui n'est pas possible en VBA). Donc si tu crée un type 'objet' (ou même un type 'cube', une type 'plan', ...). Prenons le cas d'un type de donnée identique pour tout les objets (type 'objet') dans le quel tu stoque le type d'obj, sa possition, ... Si tu à ce tableau tu peut re redimentioner avec des exprésion du type "redim <NomTableau> ('Mini' to 'Maxi')" (généralement le mini est '0' mais il est possible de mettre une autre valeur '159' par exemple). ATTENTION le 'redim' tout seul change la taille du tableau ET SUPPRIME LES DONNEES CONTENUE. Il faut donc ajouter dans la commande le mot reserver 'Preserve'. La commande au complet est donc "ReDim Preserve <NomTableau>('Mini' to 'Maxi')".
Il me semble qu'il est possible de crée des variable dynamiquement autrement en VB6 mais je ne sais plus command
    La déclaration d'un tableau dynamisue est "Dim <NomTableau> () as <TypeObjet>" Dans le cas d'un type 'objet' mais il n'est pas utilisable de suite il faut pour cela déja lui définir une plage (Exemple d'un bout de code :)

Public Objet() as ObjetType

Private Sub CréeObj ()
    Redim Objet(0 to 0)
    Objet(0).Type = "Plan"
    Objet(0)...
    Do While Compteur < NombreObjet
       Compteur = Compteur + 1
       Redim Preserve Objet (0 to Compteur)
       ...
    Loop
End Sub

Pour crée un type de donée (Exemple) :

Public Type Personne
    Nom As String
    Prénom As String
    NumSQ As String
    Adrs As String
    ...
End Type


Bon avec ça tu dois pouvoir t'en sortir.

Bon courage
D'oh! Nuts!
Mmmmm...
 DONUTS
lundi 12 juin 2006 à 09:27:24 | Re : Creation dynamique d'objets

jrivet

Membre Club
Salut,

Est ce que c'est cette boucle qui est dans le programme?

Si j'ai bien compris:

Tu as un seul tableau "objet" pouvant contenir soit une sphere soit un cube.

Petit rappel:

 - Dim c'est pour la déclaration, Si tu veux l'affectation utilise Set.
- Je crois que la déclaration selon conditions n'est pas faisable.
- Tu ne peux pas utiliser type comme nom de variable remplace le par type_ par exemple.


@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
lundi 12 juin 2006 à 09:33:45 | Re : Creation dynamique d'objets

Polack77

Heee, jrivetc'est à moi ou à mi12ox que tu t'adresse?
Temps que j'y pense il est plus simple de crée deux variable en long suplémentaire par tableau pour stoquer le numéro de la permierre et dernierre 'case' de ton tableau dynamique (même si tu peut les retrouver avee "Ubound (<NomTableau>)" et "LBound (<NomTableau>)" qui renvoie respectivement le dérnierre case et la premierre case du tableau passée en argument.)

D'oh! Nuts!
Mmmmm...
 DONUTS
lundi 12 juin 2006 à 09:43:47 | Re : Creation dynamique d'objets

jrivet

Membre Club
SAlut,

C'était a mi12ox (ton post est arrive le temps de ma réponse)

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
lundi 12 juin 2006 à 17:25:09 | Re : Creation dynamique d'objets

mi12ox

merci, mais y a un truc qui me traquace.
est-ce que c'est possible de créer un tableau de type Object et de au fur et à mesure des ajouts d'éléments, leur définir un type propre, par exemple sphère, cube, plan... et ainsi ils prenderaient directement les attributs de la classe définie?

désolé si j'ai pas tout compris et si vous m'avez en faite dit que c'était impossible:D

en tout cas merci

miro
lundi 12 juin 2006 à 17:52:53 | Re : Creation dynamique d'objets

jrivet

Membre Club
Réponse acceptée !
Salut,

Oui c'est possible avec un truc qui pourrait être du style:

Dim TabObjet(10) As Object 

For i = 1 To nombredobjets 
    If type_ = sphere Then 
       Set TabObjet(i) = New sphere  'sphere doit etre un module de classe
    ElseIf type_ = cube Then 
       Set TabObjet(i) = New cube  'cube doit etre un module de classe
    '....
    End If 
Next 
 


Coloration syntaxique automatique [AFCK]
       

Le seul truc est de savoir exactement a quel indice sont les cube et les sphere pour utiliser convenablement les différentes méthodes des objets respectifs.

Est ce que type (type_) est une variable de ton programme

Voila j'espère avoir été clair et avoir pu t'aider un peu

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
lundi 12 juin 2006 à 20:09:11 | Re : Creation dynamique d'objets

mi12ox

oui type_ est la variable dans mon fichier .ini qui indique à quel type de forme on a à faire.
et si tout objet a une méthode qui porte le meme nom mais qui fonctionne internement différemment ça devrait jouer.
par exemple.
je lance un rayon et je veux savoir si il y a intersection avec chaque objet ( pas très optimisé, mais ça c'est pour plus tard).
si j'ai dans chaque classe(sphère,cube,...) il y a une fonction CalculIntersection( les paramètres de mon rayon) qui renvoie les coordonnées du point d'intersection et le paramètre t, je n'aurai théoriquement pas besoin de savoir à quel type j'ai à faire depuis l'exterieur.
sachant que chaque fonction CalculIntersectioin diffère de classe en classe.
et puis si je dois savoir à quel type j'ai affaire est-ce que je peux utiliser if TypeOf Objet(i) is Sphère... non?
merci je crois que je commence à y voir plus clair.

miro
mardi 13 juin 2006 à 09:01:52 | Re : Creation dynamique d'objets

jrivet

Membre Club
Salut,

Tu as tout à fait raison.

Rien à redire à ton dernier post. si ce n'est que tu peux utiliser aussi le TypeName(Objet(i))
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
mardi 13 juin 2006 à 11:29:30 | Re : Creation dynamique d'objets

mi12ox

Merci ça joue tout bon je posterai le code quand il sera fini.

amicalement

miro


Cette discussion est classée dans : dynamique, objet, creation, cube, objets


Répondre à ce message

Sujets en rapport avec ce message

Creation dynamique d'objets et évènements [ par ksam007 ] Je voudrais créer dynamiquement dans un Form vide une série de boutons indicés par le nom (Exemple Btn1, Bt2, etc...) et de leurs affecter un évènemen Creation d'objets [ par gaa179 ] Bonjour,J'avais commencé à créer mon objet en vb6 et j'ai décidé de le refaire en vb.net.Cette objet doit être utilisé dans d'autre application, type DataReport : Creation dynamique d objets [ par Rayno79 ] Salut tous le monde, voila je voudrais savoir comment créer dynamiquement des objets de type text ou label dans un datareport dont la source de donnée objets et references [ par monsieurlemouche ] bonjour,j'ai besoin que quelqu'un confirme mon idée.je créée un objet collection de nom "Employes"les objets de la collection sont des objets nommés " Probleme creation de control dynamique [ par dude666 ] Voila je creer des radiobutton dynamiquement dans le prerender de ma page. ces control créer, je les rajoute à un tableau et ce tableau est rajouter à propriete interieure d'un objet 3D [ par monsieurlemouche ] salut, j'y connais rien à la 3D mais j'aimerais quand même savoir si les objets 3D qui sont modelés par les logiciels dédiés disposent d'une propriété creation dynamique de boutons et autres controles [ par saintleo ] Salut, j'aimerais pouvoir créer de manière automatique des controles. En effet j'ai une base de données et je voudrais à partir des données de celle c Probleme de serialisation d'objet [ par nonosensei ] Salut tout le monde! J'ai crée un chat en java ( udp ) et j'envoie des objets qui contiennent plusieurs informations dont le texte a envoyer. Jusque l Probleme de serialisation d'objet [ par nonosensei ] Salut tout le monde! J'ai crée un chat en java ( udp ) et j'envoie des objets qui contiennent plusieurs informations dont le texte a envoyer. Jusque l Tableau d'objets [ par LaPatoshe ] Salut a tous et toutes. Je créé un programme dans lequel un listbox apparait lors de l'appuie sur un bouton. le click de ce bouton après avoir fait ap


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 : 0,905 sec (4)

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