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

Delphi Discussion :

[Débutant] Inverser un tableau


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut [Débutant] Inverser un tableau
    Pour optimiser mon programme j'ai besoin d'inverser l'ordre des données (le dernier chiffre devient le premier ect) d'un tableau dynamique de manière globale sans passer par une boucle qui lis tous les éléments c'est trop long.

    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,

    Je ne sais pas comment est fait votre tableau.

    Dans tout les cas vous ne devez lire que la moitié de la liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For I := 0 to (Count -1) div 2 do begin
      Temp := Valuer[i];
      Valeur[I] := Valeur[Count - I];
      Valeur[Count - i] := Temp;
    end;
    Avec count comme nombre d'élément.

    Une idée comme cela en passant.
    Peut être pourriez vous simplement ajouter un flag ordre de lecture.
    Dans ce cas vous n'avez pas à traiter le changement, vous vous contentez de lire de 0 à count - 1 ou de count -1 à 0.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    tu ne pourra pas eviter la boucle par contre
    se ne sera que sur la moite de indice

    imagine tu as un tableau de 100 element

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    max := 100;
     
    for i := 0 to round((max/2)+0.2) do 
    begin
      TabFi[i]        := TabData[max-i];
      TabFi[max-i]  := TabData[i];
    end;
    PS : Grillé
    @+ Phil

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    En fait j'ai un tableau de tableau de 512*512 et je dois inverser une ligne sur deux pour que le fichier dans lequel je vais l'écrire soit lisible correctement(j'utilise un Tsreamfile). Le faire point par point c'est lent.
    Peut être pourriez vous simplement ajouter un flag ordre de lecture.
    Je sais pas du tout ce que c'est et j'ai rien trouvé dans ma recherche dessus. Est-ce que permettrait à mon instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F.Writebuffer(Save_tab[i][j][0],2*length(Save_tab[0][0]));
    d'écrire la ligne dans le fichier directement à l'envers??

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Faudrait voir l'ensemble du programme

    d'ou vient le Tableau ?
    Pourquoi l'écrire à l'envers ?

    Sinon, normalement l'inversion d'item dans un tableau c'est rapide, j'aurais fait le même algo que Tardiff Jean-François, avec juste la moitié de parcours...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    en fait c'est un tableau d'image 512*512 et une ligne sur deux de chaque image a était enregistré à l'envers ( et ca j'y peux rien) donc si j'enregistre le tableau tel quel, lors de la lecture on voit l'image et sa réflection mélangé. Et comme j'ai parfois besoin d'enregistrer une centaine d'image... ca traine.

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Peux-tu nous fournir la fonction qui inverse actuellement ton tableau ??
    tes images dans le tableau c'est des TImage, ou le binaire d'une Image ?
    Et ton problème peut venir de là, si tu déplace dans le tableau le binaire, au lieu de déplacer un pointeru sur le binaire, ce n'est pas supprenant que ce soit lent, ...

    Ensuite, faut bien voir qu'enregisté une centaine d'image, j'ignore la taille, mais cela peut devenir monstreux ... faut bien que le disque écrive, je m'en suis arrêté au ATA 133, mais c'est du 133 Mo/s donc en gros (disons la moitié pour le réel), si tu as 100 Images de 1.33Mo (ça fait un bitmap 24bit de 241x241) ça doit bien mettre 2s pour écrire les données, sans compter le temps de la gestion des fichiers par Windows dans la FAT, ... et vu que ton programme n'est pas tout seul, windows ne va envoyer les données que lorsqu'il a le temps de gérer les ressources pour ton programme, donc ce temps peut énormément augmenter ... mais personnellement au bureau pour écrire 133 séquence de 1Mo, dans un seul fichier, cela prend 19s (bon il y a de l'affichage ce qui est très lent, des processmessages, ...)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    Bon j'ai testé l'algo et ça marche suffisament rapidement à mon goût. donc


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

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 13h44
  2. Réponses: 3
    Dernier message: 24/09/2005, 09h34
  3. Aide débutant instruction VBA tableau Excell
    Par damien33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2005, 10h31
  4. [Débutant] Définir un tableau de JPanel
    Par etiennegaloup dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 20/07/2005, 10h22
  5. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 22h38

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