IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

[TP] Utiliser le même programme quel que soit le type de la variable à traiter


Sujet :

Turbo Pascal

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut [TP] Utiliser le même programme quel que soit le type de la variable à traiter
    Bonjour
    Je voudrais utiliser mon programme (quicksort) quelque soit le type de ma variable, c'est dire que se soit un string, un real ou une date.
    Existe - t- il sous pascal quelque chose comme overload en delphi.
    j'utilise le compilateur turbo pascal.
    mercii

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    Lei,

    Non, avec TP, tu ne peux pas.

    Evidemment, la programmation générique serait plus pratique, mais TP ne connaît pas ce genre de bidule.

    Mais il est si facile de faire copier/coller, et d'adapter la procédure à un autre type...

    Si tu veux t'orienter vers ce type de solution générique, ce qui est une bonne idée, alors TP n'est pas pour toi.

  3. #3
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    bonjour
    +1 sur droggo
    et j'ajoute tu pourras aussi faire(chiant et complexe ) ecrire une procedure qui lit la chaine (String) et detecte quel type de variable il s'agit c'est a dire (integer,real.....)et puis fait les conversions nécessaires mais c'est trop de travail pour rien autant t'orienter vers un langage qui t'offre plus de facilité
    @+

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Peut-être avec les pointers, qu'il suffirait de caster dans le type que tu veux.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par droggo
    Si tu veux t'orienter vers ce type de solution générique, ce qui est une bonne idée, alors TP n'est pas pour toi.
    Je peut le faire avec un autre compilateur de pascal?

  6. #6
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 259
    Points : 2 420
    Points
    2 420
    Par défaut
    Pascal est un langage très typé.
    Donc les opérations s'appliquent à un type de données mais pas à un autre.

    Quelques exceptions, comme le signe '+' qui fonctionne avec tous les types numériques & qui permet une concaténation de chaînes, ou une opération sur les ensembles (union, si ma mémoire est bonne).
    Idem pour les autres opérations arithmétiques, sauf que ces opérateurs ne fonctionnent pas avec les chaînes.

    Donc, pour le tri, tu as éventuellement la possibilité de créer une procédure, avec comme paramètres un pointeur générique (existe avec Turbo Pascal mais n'est pas standard), qui pointera sur ta variable & le type de la variable.
    Là, il te suffira ( ) de traiter ton tri en fonction du type (un case, quoi).

    Mais c'est vrai que c'est lourdingue.

    À toi de voir si ça t'amuse de le faire ou si tu as plus urgent.
    Note que la solution de krachik est intéressante aussi.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    je v faire un case c le plus simple pour une novice ,
    mon maitre de stage se chargera d utiliser un overload quand il passera mon programme en delphi

    merci pour votre aide

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    Doa,
    Citation Envoyé par relena93
    je v faire un case c le plus simple pour une novice ,
    mon maitre de stage se chargera d utiliser un overload quand il passera mon programme en delphi

    merci pour votre aide
    Si c'est ton directeur de stage qui te demande de faire ça en TP, il est un peu ouf quelque part.

    Dans le temps, j'avais fait quelque chose qui faisait à peu près ce que tu veux ("dans le temps", c'est assez vieux, et on n'avait pas vraiment le choix pour les compilateurs Pascal comme c'est le cas maintenant. [ce qui ne signifie pas qu'il n'y avait que Borland, mais les autres compilateurs avaient les mêmes limitations, sans la vitesse de compilation])

    Le truc est de définir un record avec des champs variables, contenant également un champ indiquant le type de donnée utilisée, c'est à dire le champ qu'il va falloir traiter, et définir les procédures allant avec : test égalité, >, ...., éventuelles conversions.
    Bref, ça ressemblerait aux Variant du VB et de Delphi et autres.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Je vais réfléchir au record mais je laisse ça de côté pour le moment, mon programme complet n'est pas tout à fait au point, je vais attaquer un autre petit souci.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    coucou
    je suis toujours perdu
    dans ma procedure de trie je declare un tableau de string et aussi la colonne a trier
    mais comment lui dire ke dans mon tableau la colonne a trier est un reel
    (j ai fait une procedure qui transforme mon string en reel.)
    mais je ne c pas trop comment organser tout ca!
    mon mettre de stage ma parler de faire un tag selon le non de colone ( j ai pas bien compris non plus)
    je n'utilise pas un record car au depart mon fichier provient d'un fichier texte.

    Citation Envoyé par wormful_sickfoot
    Peut-être avec les pointers, qu'il suffirait de caster dans le type que tu veux.
    tu peut m'en dire plus ???

    merci de votre aide

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    Puy,
    Citation Envoyé par relena93
    je suis toujours perdu
    dans ma procedure de trie je declare un tableau de string et aussi la colonne a trier
    mais comment lui dire ke dans mon tableau la colonne a trier est un reel
    (j ai fait une procedure qui transforme mon string en reel.)
    Pourquoi un tableau de string si ces chaines représentent des réels. Un tableau de réels est ce qu'il faut utiliser.

    Citation Envoyé par relena93
    mon mettre de stage ma parler de faire un tag selon le non de colone ( j ai pas bien compris non plus)

    mon maître de stage m'a parlé de faire un tag selon le nom de colonne (je n 'ai pas bien compris non plus)
    il faut que tu passes une valeur indiquant ce qu'il faut trier.

    Et que tu fasses un effort sur l'orthographe, c'est plus important que tu le penses probablement.
    Je n'ai pas relevé les autres fautes, trop de travail.

    Citation Envoyé par relena93
    je n'utilise pas un record car au depart mon fichier provient d'un fichier texte
    Rien de t'empêche de faire des record et de remplir depuis un fichier texte.

    Le plus simple serait que tu nous montres ton code, car là, il est impossible de voir où tu vas.
    J'ai l'impression que tu n'es pas sur la bonne voie.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Bonjours
    Pourquoi, je n'utilise pas un record car les fichiers à lire sont tous différents, donc je n'empose pas de structure particuliére.
    Je déclare une tableau de string (A) car je ne sais pas à l'avance s'il y a des réels dedans. J'ai trouvé une solution à mon probleme quand je verifie si ma colonne est bien un réel avec VAL(s,x,error); et je met les élements convertie dans un autre tableau (B); puis je trie mon tableau A en fonction du tableau B.

    Merci, pour vos reponces.

    (et désoler pour mes fautes d'orthographes)

    Ma solution marche parfaitement, donc mon probleme est résolue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/10/2010, 20h18
  2. Réponses: 10
    Dernier message: 02/05/2010, 21h19
  3. Centrer quel que soit la dimension du navigateur
    Par anoushka dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 07/12/2009, 13h01
  4. [XL-2003] Lancer une macro à l'ouverture d'Excel quel que soit le fichier
    Par EtyenH dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/05/2009, 08h50
  5. "UnknownHostException" quel que soit l'url
    Par iirqy dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/03/2007, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo