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??
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
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
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.
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??
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.
thibaultdelor.com
SCJP & SCWCD
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
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 :
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.
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.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager