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 :

transformation ( basic en delphi)


Sujet :

Delphi

  1. #21
    Fxg
    Fxg est actuellement connecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Ce ne serait pas plus rapide car les accès au Disque Dur sont ce qu'il y a de plus lent.
    Il vaut mieux faire tous les calculs en mémoire et ensuite sauvagarder sur le disque.

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Merci, Fxg !

  3. #23
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Fxg Voir le message
    Il vaut mieux faire tous les calculs en mémoire et ensuite sauvegarder sur le disque.
    Fait !
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Roland Chastain, c’est super je suis comblé, merci.

    En effet, même si c’est plus long de les enregistrer sur le disque une fois que c’est fait on peut revoir ou retraiter les fichiers sans avoir à les recréer… ce qui, en fait, permet de gagner du temps sur le temps perdu…

  5. #25
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tout dépend SWAP ou pas !
    Si l'on stocke un trop grand nombre de permutation provoquant le dépassement de la mémoire physique, cela provoque l'utilisation fichier d'échange et les performances s'écroulent, sujet débattu dans
    algorithme combinaisons et test possibilites
    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. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Je vais lire ça. En ce qui me concerne, j'ai constaté que dans le programme proposé plus haut :

    Un composant richedit affiche les résultats plus rapidement que la listbox.

    Il serait intéressant de savoir pourquoi ( pour moi ).

    Essais réussi jusqu'a 11 caractères permutés, ensuite mémoire out !

  7. #27
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Alors bon, le code que j'ai fait et je pense largement optimisable et puis j'ai fait çà en 5mn .

    J'ai utilisé des TStringList qui ne sont pas des plus rapide. En passant par des tableaux je pense qu'on gagnerai pas mal en temps de traitement.

    Pour le problème de mémoire, c'est peut être du au système récursif de la fonction plus les TStringList créées dynamiquement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #28
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    pour moi j'avais fais du basic sur SAKHR ;1ére génération des pc en arabe(1984), sans disk dur, sans aucun périférique, si l’aimantation se coupe, je suis foutu
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    Soir,

    Perso je dirais que ça ne peut pas être plus rapide si tu envoyais les résultats sur un DD puisque qu'un accès en RAM restera toujours beaucoup plus rapide qu'un accès DD...

    Puisque les résultats sont stockés dans un TStringList, il te suffit à la fin de la procédure (et avant de libérer la variable: LstTmp d'appeler un LstTmp.SavetoFile(nom_de_fichier).

    Bonne continuation et A+++

    EDIT: désolé je viens de m'apercevoir que cette réponse t'avait déjà été donnée...

  10. #30
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Ouah,

    Moi ça me rappel mon premier PC, le language est carrément le même

    j'avais un APPLE IIe et c'etait du BASIC Applesoft (fait par Microsoft mdr...) identique à cela. Mortel...

    C'était exactement l'image qu'ils mettent pour le Apple II+ de 79
    http://fr.wikipedia.org/wiki/Apple_II

    La je viens de prend 30 ans dans la tête.



    quand tu lis çà tu crois réver :
    L'Apple II a été remplacé par l'Apple II plus, qui incluait le langage de programmation BASIC Applesoft, signé Microsoft. Il possédait 48 Ko de mémoire, extensible à 64 Ko via une carte langage, et ajoutait l'utilisation d'une arithmétique à virgule flottante dans la ROM

  11. #31
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Je peux toujours utiliser ce code basic, avec mon Note Book 200 sous xp, et il fonctionne très bien, il me sort les 3628800 permutations de 9 N° en un clin d’œil. Exemple ci-dessous :



    Le problème, c’est que la fenêtre d’édition ‘exécution’ est minuscule et il n’est pas possible de remonter la liste pour consultation.

    J’aurais aimé avoir l’équivalent de ce programme en pascal…je possède une version de turbo pascal 4.0 qui galope aussi vite que le cheval de Zorro et n’affiche pas : ’’mémoire out’’, même avec des permutations importantes...

    L’avantage de ces vieilleries, c’est qu’une dizaine de ligne de code faisait des miracles…

  12. #32
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    ça se fait aussi très bien en Pascal, mais l'écriture sur la console Windows est assez lente...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    program permutations;
     
    {$APPTYPE CONSOLE}
     
    {
    50 print chr$(10)
    60 if len(f$)=1 then 80
    70 d$=d$+left$(f$,1):p=p+1:p$(p)=f$:f$=right$(f$,len(f$)-1):goto 60
    80 x=x+1:print d$+f$,x:i=2
    90 f$=p$(p):p=p-1:if len(d$)=1 then 110
    100 d$=left$(d$,len(d$)-1):goto 120
    110 d$=""
    120 a(i)=a(i)+1:if a(i)<i then 150
    130 a(i)=0:i=i+1:if i>n then print :end
    140 goto 90
    150 f$=right$(f$,len(f$)-1)+left$(f$,1):goto 60
    155 print
    160 end
    }
     
    var
      fs: string;
      ds: string;
      n : Integer;
      a : array of Integer;
      ps: array of string;
      x : Integer;
      p : Integer;
      i : Integer;
    begin
      p := 0;
      x := 0;
    {
    10 cls
    20 print
    30 input" tapez votre mot ";f$:d$="":n=len(f$):dim a(n):dim p$(n)
    }
      Write(' tapez votre mot ');
      ReadLn(fs);
      n := Length(fs) + 1; // 0 basé
      SetLength(a , n);
      SetLength(ps, n);
      repeat
      {
      60 if len(f$)=1 then 80
      70 d$=d$+left$(f$,1):p=p+1:p$(p)=f$:f$=right$(f$,len(f$)-1):goto 60
      }
        while length(fs) <> 1 do
        begin
          ds := ds + fs[1];
          p := p + 1;
          ps[p] := fs;
          Delete(fs, 1, 1);
        end;
      {
      80 x=x+1:print d$+f$,x:i=2
      90 f$=p$(p):p=p-1:if len(d$)=1 then 110
      100 d$=left$(d$,len(d$)-1):goto 120
      110 d$=""
      }
        x := x + 1;
        WriteLn(ds, fs, #9, x);
        i := 2;
        repeat // 90
          fs := ps[p];
          p := p - 1;
          if Length(ds) <> 1 then
            SetLength(ds, Length(ds) - 1)
          else
            ds := '';
      {
      120 a(i)=a(i)+1:if a(i)<i then 150
      }
          a[i] := a[i] + 1;
          if a[i] < i then
            Break;  // goto 150
      {
      130 a(i)=0:i=i+1:if i>n then print :end
      140 goto 90
      }
          a[i] := 0;
          i := i + 1;
          if i > n then
          begin
             WriteLn('Fin');
             ReadLn;
             Exit;
          end;
     
        until False;  // goto 90
      {
      150 f$=right$(f$,len(f$)-1)+left$(f$,1):goto 60
      }
        fs := Copy(fs, 2, MaxInt) + fs[1];
      until False; // goto 60
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #33
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ça se fait aussi très bien en Pascal, mais l'écriture sur la console Windows est assez lente...
    Chapeau pour le "portage".

    Voici mon essai.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    program Permutations;
     
    { Génère toutes les combinaisons possibles d'un ensemble de caractères,
      à partir d'une chaîne saisie par l'utilisateur. Le résultat est enre-
      gistré dans un fichier texte. }
     
    {$IfDef VPascal}
    {&PmType Vio}
    {$Else}
    {$IfNDef Ver70}{$AppType Console}{$EndIf}
    {$EndIf}
     
    var
      s: string;
      f: text;
     
    procedure Permute(var ps: string; const n: integer);
    var
      temp: string;
      i, l: integer;
    begin
      temp := ps;
      l := Length(temp);
      temp[l - n + 1] := ps[l];
      for i := l - n + 2 to l do temp[i] := ps[i - 1];
      ps := temp;
    end;
     
    procedure Generateur(var ps: string; const n: integer);
    var
      i: integer;
    begin
      for i := 1 to n do
      begin
        Permute(ps, n);
        if n = 1 then WriteLn(f, ps)
        else
          Generateur(ps, n - 1);
      end;
    end;
     
    begin
      Write('?');
      ReadLn(s);
     
      Assign(f, s + '.txt');
      Rewrite(f);
     
      Generateur(s, Length(s));
     
      Close(f);
    end.
    @Liberator

    Compilation testée avec Turbo Pascal 7.0. Si vous utilisez une autre version, il faut modifier en conséquence la mention Ver70 dans les directives de compilation.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  14. #34
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    @ Roland Chastain,

    J'ai utilisé Delphi 7 : Il écrit les 39 916 800 permutations de 11 caractères en une minute... sur mon petit Note Book 200.

    C'est excellent pour moi, je vais tenter 12 caractères soit 479 001 600 permutations…mais sur une machine plus puissante, juste pour voir…

    Bravo pour le code, et encore merci !

  15. #35
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Citation Envoyé par Liberator Voir le message
    Je ne suis pas programmateur et ne souhaite pas le devenir...
    Ca se sent un peu.



    Il y a quand même un gros problème conceptuel dans tout ça, et il faudrait sans doute repenser le problème avec un raisonnement plus synthétique :
    - qu'est-ce qui peut bien justifier le fait d'écrire, ou de stocker TOUTE la liste en mémoire ?


    Il y aura sans aucun doute un traitement (qu'on ignore) qui sera effectué sur cette liste afin de parvenir à un résultat (car je doute fort que cette liste ait de l'intérêt en elle-même).
    Il serait donc bien plus pertinent d'effectuer ce traitement au niveau des permutations et de séparer le bon grain de l'ivraie tout de suite, sans devoir stocker puis relire toute la liste.


    Si c'est pour faire un moteur d'anagrammes, par exemple, il faudrait comparer chaque résultat au dictionnaire dans la boucle des permutations, ne conserver QUE les mots ayant un sens, et de laisser les autres dans les ténèbres de l'insignifiance.

    Au final, gain de temps et d'espace assurés !
    Sans compter la satisfaction intellectuelle d'avoir évité de travailler sur du non-sens.

  16. #36
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Certes, il y a du bon sens et de l’ivraie dans ces propos et je comprends parfaitement ce raisonnement qui semble justifié.

    Mais il est des cas, où la curiosité sert de moteur et le non-sens de direction.

    L’esprit se contentant, parfois, d’un rien pour être satisfait.

    Qu’omni soit qui mal y pense.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment effectuer une transformation XSLT avec Delphi ?
    Par Raylemon dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h21
  2. DLL, Visual basic et Delphi
    Par Etienne dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2010, 08h53
  3. Transformer du code Delphi en Java
    Par rosana23 dans le forum Général Java
    Réponses: 1
    Dernier message: 18/07/2010, 10h40
  4. Transformation Javascript en Delphi
    Par Charly910 dans le forum Langage
    Réponses: 11
    Dernier message: 19/02/2009, 16h55
  5. Transformer un exe delphi en service windows
    Par laadhar dans le forum Langage
    Réponses: 33
    Dernier message: 10/02/2006, 12h06

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