Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1304 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Récupérer l'index d'un item d'un array constant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer l'index d'un item d'un array constant

n°1111679
Inekman
Posté le 07-06-2005 à 18:45:07  profilanswer
 

Salut tout le monde, salut Antp, comment va ? :hello:  
 
J'ai un petit souci, normal :D
 

BufferSize : array [0..5] of Integer = (16384,32768,65536,262144,524288,1048576);


La sélection d'un élément d'une zone de liste affecte à une variable la valeur du tableau constant correspondant à l'indice de l'élément sélectionné :
 

TAILLE_BUFFER := BufferSize[cboBuffer.ItemIndex];


Sachant que dans la zone de liste on a pas les valeurs du tableau mais une représentation de la forme "16 ko", "32 ko", etc.
 
Tout ça marche très bien, sauf que j'aimerai faire l'opération inverse :sweat:.  C'est à dire, j'ai une valeur dans TAILLE_BUFFER qui correspond donc forcément à un élément du tableau BufferSize et donc j'aimerai pouvoir retrouver l'indice de cette valeur dans le tableau pour l'assigner à l'attribut ItemIndex de la zone de liste pour que l'élément soit automatiquement sélectionné. Charabia or not ? :D
 
Sachant que je pourrai faire ça avec une boucle mais je me demandais s'il n'existe pas une fonction du style IndexOf qui retourne directement le numéro d'un élément du tableau :D
 
Voilà, tout ça pour pas grand chose finalement avec du recul [:arg]

mood
Publicité
Posté le 07-06-2005 à 18:45:07  profilanswer
 

n°1112382
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 11:30:15  profilanswer
 

Pour les tableaux, la seule solution est une boucle.
Mais si ça peut te rassurer, IndexOf c'est juste une fonction qui encapsule une boucle :D (sauf pour les listes de chaînes triées, mais ça c'est une autre histoire)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1112401
Inekman
Posté le 08-06-2005 à 11:39:49  profilanswer
 

Bon ben c'est ce que j'ai fait en attendant d'avoir une réponse :D pi ben si c'est la seule solution ^^
 
Par contre je voulais faire un autre post, mais je vais continuer ici je crois. Ca concerne l'organisation du code.
 
Je me demande, comment un programme gère plusieurs format de fichier, l'ouverture, la sauvegarde des données dans les fichiers etc.. Je fais un programme qui doit être capable de traiter des fichiers d'une ancienne version mais je sais pas comment organiser le code efficacement.
 
Pour l'instant je suis parti avec des classes, une pour chaque format de fichier, mais après je sais pas comment faire faire les mêmes opérations sur des formats différents :S

n°1112445
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 11:58:10  profilanswer
 

C'est un peu vague ta question :??: c'est quoi les "opérations" à faire ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1112478
Inekman
Posté le 08-06-2005 à 12:14:03  profilanswer
 

Ben on va faire simple :D
 
Il y'a 3 formats de fichier et chacun ont des informations stockées dans leur entêtes. Quand je parle d'opération, je veux dire par exemple, afficher dans une list box les données de chaque type de fichiers, ceux contenu dans l'entête.
 
j'imagine un truc du genre, on clique sur un bouton "Ouvrir un fichier", la boîte de dialogue s'ouvre, on choisit un fichier en fonction du filtre appliqué qui peut donc être de l'un des trois format proposé et on clique sur le bouton "Ouvrir". A partir de là, on retourne dans le programme et il faut pouvoir détecter le format du fichier sélectionné pour instancier un objet de la classe correspondant au format choisit.
 
C'est pas clair hein :D

n°1112485
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 12:17:51  profilanswer
 

Regarde l'extension du fichier choisi, ou examine les premiers octets du fichier s'ils peuvent servir à identifier le type.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1112500
Inekman
Posté le 08-06-2005 à 12:24:48  profilanswer
 

Oui ça je sais faire, mais c'est après, comment ça marche le fait d'avoir un objet qui peut être de 3 type possible.
 
Par exemple :
 
Case Extension of
'.wav' : monObjet := TFichier1.Create;
'.mp3' : monObjet := TFichier2.Create;
'.ogg' : monObjet := TFichier3.Create;
End;
 
Est-ce que je peux faire un truc de ce style ? Si oui, monObjet doit etre de quel type à la déclaration ? Ou alors est-ce que je dois déclarer autant d'objet que de format disponible ?
 
En supposant que ce que j'ai mis fonctionne, si j'ai un bouton "Afficher info", dois-je standardiser les méthodes des classes de façon à pouvoir faire "monObjet.Afficher" quel que soit la classe de l'objet ?
 
Je me demande trop comment font les logiciels qui gèrent 15 mille format, comment il organise leur code :S

n°1112511
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 12:30:13  profilanswer
 

Le principe c'est de faire une classe ancêtre commune, genre TFichier, dont dérivent les 3 autres.
Cette classe commune doit alors avoir une fonction Afficher déclarée comme virtual ou virtual abstract, et les 3 autres écrasent cette fonction via une fonction Affichée déclarée comme override.
Et donc au final tu as juste un objet TFichier à déclarer.


Message édité par antp le 08-06-2005 à 12:30:40

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1112523
Inekman
Posté le 08-06-2005 à 12:38:45  profilanswer
 

Ah ben c'est bon à savoir, c'est exactement ce que j'ai fait :D
 
Donc ça veut dire que la méthode Afficher de la class TFichier va utiliser les attributs commun aux sous-classes et les sous classe vont ajouter leur propre attribut à la méthode Afficher héritée. C'est bon à savoir :)
 
Par contre, y'a un truc qui me gène, c'est que les sous-classe ont une méthode qui n'a pas lieu d'être dans TFichier. Comment ça se passe dans ce cas ? Je créé quand même la méthode dans TFichier sans rien mettre dedans ?

n°1112630
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 13:51:17  profilanswer
 

oui, en virtual abstract alors (ou bien en virtual normal et tu laisses l'implémentation vide)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 08-06-2005 à 13:51:17  profilanswer
 

n°1112644
Inekman
Posté le 08-06-2005 à 14:00:29  profilanswer
 

C'est ça l'intérêt de déclarer une méthode en Virtual ? Elle existe virtuellement uniquement pour le besoin des sous-classe ? Si c'est ça, je suis content putain j'ai découvert un concept de la POO par moi-même :D
 
La différence entre Virtual et Virtual Abstract keske ? :)

n°1112703
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-06-2005 à 14:40:22  profilanswer
 

f: TFichier;
 
f.Affiche -> si Affiche est abstract, il appellera l'Affiche réel de la classe (même si "f" est déclaré comme TFichier le fait qu'il soit créé comme TFichier1 fera que c'est l'Affiche de TFichier1 qui sera appelé).
Et "virtual; abstract;" c'est juste pour ne pas avoir à définir l'implémentation (pour éviter de laisser une méthode vide par exemple)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1113215
Inekman
Posté le 08-06-2005 à 21:13:28  profilanswer
 

yes c'est pile poil ce qu'il me faut alors :)
 
woa chui trop content d'avoir affaire à ce genre de truc...je progresse ! POO, serre les fesses j'arrive :D
 
Edit : un ENORME merci antp, premier sur Delphi [:powa]


Message édité par Inekman le 08-06-2005 à 21:45:40

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Récupérer l'index d'un item d'un array constant

 

Sujets relatifs
Récupérer une variable d'environnement[VBS] Coment recupérer ...
récupérer du texte saisierécupérer le clsid client d'un programme avec son progid
[C] récupérer les arguments de argv en entier?Div avec les positions absolute et le z-index pas possible?
document.getElementsByName('nom').item(variable)... marche pas sous IE[java] recuperer le nom d'une variable
problème avec strtok pour récupérer les videsRécupérer des url depuis une page
Plus de sujets relatifs à : Récupérer l'index d'un item d'un array constant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR