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 :

[DELPHI] Problème de String <-> MemoryStream


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Par défaut [DELPHI] Problème de String <-> MemoryStream
    Salut tout le monde !

    Je pensais bien connaître les MemoryStream mais je bute sur un détail :/.
    Je voulais lire quelques octets dans un MemoryStream et placer le résultat dans un String mais problème. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    var MS : TMemoryStream;
         txt : String;
    begin
      MS := TMemoryStream.Create;
      MS.LoadFromFile('C:\wa.txt');
      MS.Position := 0;
     
      MS.Read(txt, 4);
    end;
    Avec une chaine courte aucun problème... Pourtant là je ne lis que 4 octets. Alors où est le problème avec mon String ?

    Merci d'avance

    Merci d'utiliser les balises code ou quote, Laurent Dardenne

  2. #2
    Membre confirmé
    Profil pro
    Directeur
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Par défaut
    Ca m'interesse aussi, si qq1 avait une idee...

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    var MS : TMemoryStream;
    txt : String;
    begin
    MS := TMemoryStream.Create;
    MS.LoadFromFile('C:\wa.txt');
    MS.Position := 0;
    SetLength(txt, 4); // dimensionne le string
    MS.Read(txt[1], 4); // lit à partir du 1° caractère de la chaîne
    end;
    il est pê plus facile d'utiliser un PChar, un array of Char, ou une chaine du type string[4]
    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 !

  4. #4
    Membre confirmé
    Profil pro
    Directeur
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Par défaut
    Merci, ca fonctionne (en partie en tous cas ^^)

  5. #5
    Membre confirmé
    Profil pro
    Directeur
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Par défaut
    Bizzare, ca fonctionne vraiment en partie aparament ...
    Exemple: prenons test.txt avec inscrit dedans "test&test" (sans les quotes), on le load dans un stream, on passe se stream en string comme tu nous l'as indiqué et on affiche ce string via showmessage ca nous donne "testtest" ... bizzare.
    J'ai essayé cette technique quand un programme, et il semble que ca pose un probleme mais je sais pas lequel :/ assez ennuyant... Si qq1 a une idee d'ou ca peut venir ce genre de chose (ps pr le programme: http://www.developpez.net/forums/sho...d.php?t=192597 cf 2eme partie avec le stream --> string)

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 130
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 130
    Par défaut
    Exemple: prenons test.txt avec inscrit dedans "test&test" (sans les quotes), (...) on affiche ce string via showmessage ca nous donne "testtest" ... bizzare.
    Non, rien que de très normal : quand tu veux faire afficher sur un bouton un caractère souligné (ie hot key), tu mets bien une esperluette à l'endroit qui va bien, non ?
    Ben c'est pareil !
    Mets-en 2, d'esperluettes, et ça t'en affichera une.
    C'est comme le slash "/" sous Linux, et d'autres caractères du même genre, qu'il faut doubler.

    Mes 2 cts,
    JP

Discussions similaires

  1. [D7][Débutant] Problème conversion String <- TEdit
    Par _alex_ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/02/2006, 22h48
  2. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  3. Réponses: 2
    Dernier message: 11/05/2005, 13h23
  4. Réponses: 5
    Dernier message: 18/03/2005, 20h10
  5. [delphi] problème d'eclairage
    Par Dr@ke dans le forum OpenGL
    Réponses: 4
    Dernier message: 26/02/2005, 14h17

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