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

Langage Delphi Discussion :

Problème pour lire les données (Valeur) d'un fichier.


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Problème pour lire les données (Valeur) d'un fichier.
    Bonjour à Tous...

    Je finalise mon Front-End pour FUTURE PINBALL (Emulateur de Flippers)

    L'idée est de récupérer le fichier des HighScores et de l'afficher en transparence sur l'image du flipper.

    Ces HScores sont stocker dans un fichier portant le nom du flipper : Flipper.fpRAM
    Ce sont de petits fichier de 3Ko.

    J'ai analysé ce fichier avec un éditeur Héxa et voilà mes premières investigations.
    (Voir pièces jointes : PAGE1.jpg, PAGE2.jpg, PAGE3.jpg, PAGE4.jpg, PAGE4.jpg, PAGE5.jpg)

    Les HScores sont stocker à l'offset : 00000860 - 00000AB0 (Voir PAGE4.jpg)

    Je récupére bien les 10 noms TUS, TUS, TUS, TUS, TUS, TUS, TUS, MIK, UJU, MIK

    Mon problème est pour lire les valeurs (Hscore) qui suivent le nom du Joueur.

    J'ai essayer avec des méthode classique :
    AssignFile(F,'Flipper.fpRAM');
    Reset(F);
    etc...

    Mais je récup les caractères et non pas les valeurs.

    Pourriez vous m'aider sur la méthode pour ouvrir ce fichier et lire ces valeurs ?

    Merci.
    Images attachées Images attachées      

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 854
    Points : 11 287
    Points
    11 287
    Billets dans le blog
    6
    Par défaut
    Comparer high score connu et valeurs hexa correspondantes permettrait d'avancer sur le format de stokage, et donc la manière de les récupérer.
    Les pseudos sont tous de 3 caractères, ou il y a un maximum et un terminateur ou une notion de longueur du nom ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci pour ton aide @tourlourou.

    Oui les noms sont sur tois caractères, toutes tes remarques ne me pose pas de problème (je maitrise.?.)
    (marqueur début, marqueur fin, enregistrement à longeur fixe...)

    Le problème c'est que je ne sait pas de quelque maniére ouvrir ce fichier.

    Je ne pense pas qu'il soit en binaire sinon je ne verrais pas les noms ???
    Est-ce un Record ?
    etc... ?

    Merci...

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    si tu pouvais nous fournir un exemplaire de ce fichier ce serait déjà un peut plus simple

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    No problèmo... @Cirec

    Attention, le nom du fichier est : Flipper.fpRAM

    Je l'ai renommé en : Flipper_fpRAM.txt car sinon le forum ne le prend pas.

    Merci...
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 854
    Points : 11 287
    Points
    11 287
    Billets dans le blog
    6
    Par défaut
    Si le format est fixe, quel qu'il soit, on peut l'ouvrir dans un TmemoryStream avec la méthode LoadFromFile et aller à l'offset désiré lire dans un buffer dont on n'aura plus qu'à tirer la valeur du high score.

    On peut supposer qu'ils sont codés comme des entiers (sur 10 octets max) et qu'il y a une autre donnée chiffrée (date ?). Connaître ces high scores pourrait permettre de vérifier des hypothèses en cherchant comment ils pourraient être codés.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    ... Connaître ces high scores pourrait permettre de vérifier des hypothèses en cherchant comment ils pourraient être codés.
    je ne peux qu'approuver, en attendant, est ce que ces "Scores" te sont familiers ?
    8045600
    6141500
    2761400
    2291150

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour à Vous...

    Il est vrai que si je vous avaient donné les détails cela aurait simplifié le truc.

    Oui, ces HScores me disent quelques choses...

    En pièces jointes :

    le fichier HScores : Flipper_fpRAM.txt
    Une copie d'écran : ECRAN_HScores.jpg

    Merci...
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    effectivement c'est beaucoup plus simple ainsi

    bon j'ai fait au plus simple le code extrait les 10 HScores et les affiches dans un memo
    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
    type
      THScore = packed record
        Sign: Word;
        Unused1: Word;
        HScore : Cardinal;
        Unused2: Cardinal;
        Unused3: Cardinal;
        Unused4: Cardinal;
        NName: array[0..2] of Char;
      end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    const Sign = $ACB8;  // signature HScores
    var
     I: Integer;
     W: Word;
     HS: THScore;
    begin
      with TMemoryStream.Create do try
        LoadFromFile('.\Flipper.fpRAM');
        Position := $84C;  //$860;
        ReadBuffer(W, SizeOf(Word));
        if W = Sign then begin
          Seek(-SizeOf(Word), soFromCurrent);
          for I := 1 to 10 do begin
            ZeroMemory(@HS, SizeOf(THScore));
            ReadBuffer(HS, SizeOf(THScore));
            if HS.Sign = Sign then
              Memo1.Lines.Add(Format('%s    %0.n', [string(HS.NName), HS.HScore/1]));
            Seek(SizeOf(Cardinal), soFromCurrent);
          end;
        end;
      finally
        Free;
      end;
    end;
    Citation Envoyé par Resultat obtenu
    TUS 9 027 600
    TUS 8 045 600
    TUS 6 141 500
    TUS 2 761 400
    TUS 2 291 150
    TUS 2 018 150
    TUS 1 632 650
    MIK 1 361 700
    UJU 1 268 300
    MIK 1 149 550
    il faudra peut être prévoir un scan pour trouver le début des données "Sign = $ACB8;"
    si l'offset de départ n'était pas la même pour tous les fichiers

    ici elle est fixé arbitrairement à l'adresse $84C qui correspond au premier Score contenu dans le fichier exemple.
    Mais tu devrais t'en sortir avec ce bout de code

    Cordialement,
    @+

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Yep ! Yep ! SUPER ! MEGA ! GENIAL ! ET TOUT ET TOUT...

    Merci @Cirec.

    Ca fonctionne parfaitement.

    Pour info, tout les fichiers HScores (fpRAM) des flippers ont la même structure et l'offset HScore est le aussi le même. (J'en ai 908)

    J'était en train d'expérimenter le 'TMemoryStream', j'ai pas trop la maitrise de cette pt'it bestiole. Ton bout de code me fait énormément progresser dans ce domaine.

    Encore une fois merci.

    Cordialement de même.

    Ce poste est classé : RESOLU

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

Discussions similaires

  1. Problème pour les fichiers de configuration
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 15
    Dernier message: 29/01/2009, 09h35
  2. [MySQL] Problème pour insérer les données d'un fichier texte vers une table Mysql !
    Par BARRIAU76 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/01/2008, 23h24
  3. Réponses: 4
    Dernier message: 03/01/2008, 12h37
  4. [encoding] Problème pour les fichiers XML avec notepad
    Par lehamster dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/11/2006, 15h56
  5. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01

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