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 :

Sortie standard et Stream


Sujet :

Langage Delphi

  1. #1
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut Sortie standard et Stream
    Bonjour,
    je me sens un peu bête mais sa fait une heure que je cherche à écrire un TMemoryStream sur la sortie standard (en l'occurence ma console). Pourriez-vous m'aider??
    thibaultdelor.com
    SCJP & SCWCD

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ton TMemoryStream est composé de quoi ?

    En general, il suffit de lire les données du TMemoryStream et de les affichier apres formatage a l'aide des methodes Write/WriteLn .... si l'applciation est definie comem applciation console.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut
    je débute sur delphi donc veuillez m'excuser si je comprend rien
    Voici mon code, à la place de writeln('ok') je voudrais écrire le contenu de reponse.
    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
    program Project2;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,
      classes,
      IdMultipartFormData,
      IdHTTP;
     
    var
      MultiPartFormDataStream: TIdMultiPartFormDataStream;
      monhttp: TIdcustomHTTP;
      reponse : TMemoryStream;
     
    begin
        monhttp := TIdcustomHTTP.Create(nil);
        reponse := TMemoryStream.Create;
        MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
        try
          monhttp.Request.ContentType:=MultiPartFormDataStream.RequestContentType;
          MultiPartFormDataStream.AddFile('userfile', 'C:\Sites web\CubeSNMP\grid.css' , 'multipart/form-data');
          MultiPartFormDataStream.Position := 0;
          monhttp.Post('http://localhost/CubeSNMP/upload.aspx', MultiPartFormDataStream,reponse);
          writeln('ok');
        finally
          MultiPartFormDataStream.Free;
      end;
    end.
    J'ai vu les méthode read et write mais le premier argument est un buffer qui n'a pas de type, Que dois je mettre pour cet argument? Est-ce que le buffer peut être la sortie standard??
    thibaultdelor.com
    SCJP & SCWCD

  4. #4
    Membre actif Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Points : 203
    Points
    203
    Par défaut
    APrès avoir essayé plusieurs solution (notamment celle de la FAQ DELPHI) sans succès, j'ai finalement découvert la classe TStringStream ...
    thibaultdelor.com
    SCJP & SCWCD

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    En fait le parametre "reponse" est de Type TStream, qui est l'ancetre de tous les types Stream digne de ce nom.
    Tu as le TFileStream, le TMemoryStream bien sur ... mais surtout : le TStringStream.

    Cette derniere classe est specifique aux flux de chaines.
    Donc propose des methodes bien plus simple d'utilisation que les TMemoryStream qui eux peuvent contenir n'importe quoi. Donc ne donne uniquement un acces binaire aux donnée qu'il te faut lire en sachant la structure du flux.

    [Edit] Petit bout de code pour exemple d'utilisation d'un TStringStream :
    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
    program Project2;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils, Classes;
     
     
    Var SS : TStringStream;
        i : Integer;
    begin
    SS := TStringStream.Create('');
    SS.WriteString('toto'#13#10);
    SS.WriteString('titi');
    SS.WriteString('tata');
    SS.Position := 0;
    For i := 0 to 2 do
        Write(SS.ReadString(8));
     
    ReadLn;
     
      { TODO -oUser -cConsole Main : placez le code ici }
    end.
    ReadString demande un parametre entier qui designe en fait le nombre de caracteres a lire. Si il n'y a plus de caracteres a lire la chaien renvoyée est "vide" mais ne genere pas d'erreur.
    Les retours a la lignes sont defini par les caracteres #13#10 et non par les appels a WriteRead (contrairement aux methodes AddLine des Memo)

    Ici j'ai volontairement mis 8 c'est a dire que je lit :
    - toto#13#10ti
    -titata<rien><rien>
    -<rien><rien><rien><rien><rien><rien><rien><rien>
    ce qui qui reviens a afficher la chaine : toto#13#10tititata donc :
    toto
    tititata
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

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

Discussions similaires

  1. PB sortie standard avec les PTHREAD !!!
    Par djspit dans le forum C++
    Réponses: 15
    Dernier message: 19/11/2004, 01h17
  2. [langage] sortie standard linux
    Par ebaynaud dans le forum Langage
    Réponses: 8
    Dernier message: 14/10/2004, 08h05
  3. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  4. Réponses: 5
    Dernier message: 24/12/2003, 09h49
  5. Réponses: 16
    Dernier message: 18/07/2003, 17h16

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