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 :

Extraire des chaines d'un RES


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Extraire des chaines d'un RES
    Ce que je sais faire : récupérer un dictionnaire stocké en RESSOURCE
    à partir d'un fichier texte qui possède la forme suivante :

    MOT Définition, RETOUR CHARIOT
    MOT Définition, RETOUR CHARIOT

    etc...
    En utilisant les STREAMS :
    cela donne la procédure suivante (qui est OK) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Procedure TForm1.Button1Click(Sender: TObject);
    var res : TresourceStream;
     
    begin
     
    { extrait direct de res dans memo1}
     
    	Res:= TResourceStream.Create(0,'dicA_01',RT_RCDATA);
    	Memo1.Lines.LoadFromStream(RES);
     
    end;
    Ce que je cherche :
    Je voudrais travailler sur cette RES en mémoire et non
    à partir d'un MEMO (ni d'un fichier TFileStream) pour pouvoir récupérer un MOT (et sa définition)

    Je me perds complètement dans les TStringStream et les TStringlist qui devraient me permettre peut-être de me tirer d'affaire.
    (Pas de tutorial précis trouvé.)

    Je sais mettre le ressource en mémoire par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	Var memoire : TmemoryStream;
    	Begin
    	memoire:=TMemoryStream.Create;
    	memoire.position:=0;
    	memoire.LoadFromStream(res);
     
    	Memo2.Lines.LoadFromStream(memoire);
    	End;
    Mais ensuite je ne sais pas récupèrer mes chaines... car "memoire" est évidemment en un seul bloc !
    Donc la question est : comment récupérer dans mon RES des chaines séparées
    par un RC. (Pas forcément avec des Stream...)

    Merci au dépanneurs...
    Fidèle de Delphi (V.5)

    "Science sans conscience n'est que ruine de l'âme" RABELAIS

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    ... Je vais me répondre à moi-même, faute de courrier ! et pourtant pas faute de visites !
    Ai-je été clair dans ma question ?
    Peut-être que non ! (auto-critique )
    Le sujet est-il compliqué ? (allons, ici il y a des cracks - sans jeu de mot 8) - du développement)
    Résumé de l'épisode précédent :
    - j'ai un fichier texte (dictionnaire par ex) avec des RC
    - je le place dans une RESSOURCE (RES)
    - ensuite je ne sais pas exploiter cette RES pour faire des recherches (par exemple trouver un mot dedans avec StrPos par ex) et cela sans reconstituer le fichier dans un FILE mais travailler dessus en MEMOIRE pour une question de vitesse de traitement... you see ?

    Allez, à votre bon coeur messieurs dames
    Fidèle de Delphi (V.5)

    "Science sans conscience n'est que ruine de l'âme" RABELAIS

  3. #3
    Membre régulier

    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 65
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Sans avouer être un crack...
    ... On a toujours à apprendre...

    La solution est relativement simple...

    Au lieu d'utiliser un TMemoryStream, utilise un TRessourceStream et une TStringList:
    Le fichier res contient un fichier texte en RCDATA
    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
     
    procedure TFrmShowRCData.InsertNewAirlineComment;
    {$R Texte.res}
    var
      ResStream: TResourceStream;
      _Lines: TStringList;
    begin
      ResStream := TResourceStream.Create(HInstance,'Text',RT_RCDATA);
      try
        _Lines.LoadFromStream(ResStream);
        { Action sur la TStringList }
      finally
        ResStream.Free;
      end;
    end;
    Comme tu travaille avec une TStringList, de fait tu travaille en mémoire, si tu veux rechercher un mot, travaille sur CommaText...

    Cordialement

Discussions similaires

  1. [DATA] Extraire des chaines de caractères
    Par étudiant11 dans le forum SAS Base
    Réponses: 4
    Dernier message: 02/03/2015, 12h03
  2. Extraire des chaines de caractère avec position dynamique
    Par SOPSOU dans le forum Développement
    Réponses: 5
    Dernier message: 09/04/2014, 18h23
  3. Extraire des chaines de caractères dans un fichier
    Par cycy75 dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 27/03/2009, 14h56
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

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