Accueil > Forum > > > > Placer des données d'un TFileStream dans un TMemoryStream
Placer des données d'un TFileStream dans un TMemoryStream
samedi 26 juillet 2008 à 20:12:56 |
Placer des données d'un TFileStream dans un TMemoryStream

christophedlr
|
Bonsoir, Je voudrais dans mon programme, lire un fichier don les données que le lis sont transféré vers un TMemoryStream afin de pouvoir les placer ensuite dans un TRichEdit avec un LoadFromStream. Voici le code de la fonction qui foire (C'est une DLL que j'ai créer pour mon programme) : procedure TFormatFEF.LoadFromFile(var RichEdit: TRichEdit); export; var Size: Integer; MemoryStream: TMemoryStream; begin MemoryStream := TMemoryStream.Create; if (ReadFile = False) then begin MessageDlg('Vous ne pouvez pas appeler une fonction de lecture en demandant'+ ' une écriture du projet', mtError, [mbok], 0); Exit; end; FileStream.ReadBuffer(Size, 4); //Lit la taille FileStream.ReadBuffer(MemoryStream, Size); //Lit le contenu pour le RichEdit RichEdit.Lines.LoadFromStream(MemoryStream); //Inscrit dans le RichEdit end; Avec le debugueur, j'ai regardé MemoryStream, il reste à () donc à priori il a instancié sans problème (pas de réponse nil de sa part). Mais quand il passe sur ma ligne : RichEdit.Lines.LoadFromStream(MemoryStream); Là il me renvoi une violation d'accès. Ce que j'en conclut c'est qu'il n'arrive pas à lire les données du TMemoryStream. Merci d'avance pour l'aide. P.S. : Foxi et les autres, vous êtes contents ? J'utilse les streams pour la seconde version de mon projet FicEditor ;)
|
|
samedi 26 juillet 2008 à 21:32:04 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

Bacterius
|
Bonjour, euh ouais il existe une touche, qui est située au dessus du shift droit, et en dessous de la touche Retour Arrière, qui permet de faire un saut de ligne, et ainsi aérer le message  parce que là c'est pas facile à lire ... Oui vous avez deviné c'est la touche Entrée ! Bon sinon, pour transferer des données d'un fichier jusqu'à un TMemoryStream, tu peux procéder ainsi : MemoryStream.LoadFromFile([tonfichier]); RichEdit.Lines.LoadFromStream(MemoryStream); A mon avis ca devrait marcher ! Mais je ne sais pas si ça va rester stable jusqu'au bout ... Cordialement, Bacterius !
Copyright = RIGHT TO COPY
|
|
samedi 26 juillet 2008 à 21:34:20 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

Bacterius
|
Re, ah ouais j'avais pas vu le TFileStream ... Pourquoi ne pas charger directement depuis un fichier tout simplement ? Pourquoi se compliquer la vie avec un TFileStream ? Enfin si ma méthode ne convient pas à tes besoins fais-le moi savoir, d'autres personnes détiennent sûrement la clé de la vérité (ooh me voila poète !). ouais bon, ... clé de la solution ... (vexé). J'espère quand même t'avoir aidé :p Cordialement, Bacterius ! Copyright = RIGHT TO COPY
|
|
samedi 26 juillet 2008 à 21:34:51 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

christophedlr
|
Pour la touche entrée, il semble que se soit un nl2br qui soit manquant sur le forum car dans la fenêtre de rédaction du message j'avais bien mes retours à la ligne. Pour mon problème, en fait j'ai une certaine structure sur mon fichier, je dois lire la taille des données qui est enregistré et après le lit count octets renvoyé par la lecture de la taille. Donc je ne peux pas faire directement un LoadFromFile d'où mon utilisation de TFileStream couplé avec TMemoryStream.
|
|
samedi 26 juillet 2008 à 23:01:19 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

christophedlr
|
Réponse acceptée !
Problème résolu.
A la place du ReadBuffer j'utilise un CopyFrom et ça fonctionne.
Voici donc le nouveau code (qui lui est fonctionnel) :
procedure TFormatFEF.LoadFromFile(var RichEdit: TRichEdit);
var
Size: Integer;
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
if (ReadFile = False) then
begin
MessageDlg('Vous ne pouvez pas appeler une fonction de lecture en demandant'+
' une écriture du projet', mtError, [mbok], 0);
Exit;
end;
FileStream.ReadBuffer(Size, 4); //Lit la taille
MemoryStream.CopyFrom(FileStream, Size); //Copie les données dans le TMemoryStream
RichEdit.Lines.LoadFromStream(MemoryStream); //Inscrit dans le RichEdit
MemoryStream.Free;
end;
Merci quand même à ceux qui ont tenté de m'aider.
|
|
samedi 26 juillet 2008 à 23:14:35 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

Bacterius
|
Bonsoir, ah oui CopyFrom n'était pas mal non plus ^^ Bon ben ton problème est résolu, n'oublie pas de t'auto-valider ta réponse ^^ Bonne prog' Cordialement, Bacterius !
Copyright = RIGHT TO COPY
|
|
samedi 26 juillet 2008 à 23:17:01 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

Bacterius
|
Juste une question : pourquoi tu concatènes le contenu de la MessageDlg ? : MessageDlg( 'Vous ne pouvez pas appeler une fonction de lecture en demandant'+ ' une écriture du projet', mtError, [mbok], 0); end; Je me rappelles que tu utilises une DLL, c'est pour un souci de taille de String que tu concatènes ? (256 caractères max pour PChar). Je voudrais bien comprendre ... Cordialement, Bacterius !
Copyright = RIGHT TO COPY
|
|
samedi 26 juillet 2008 à 23:20:44 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

christophedlr
|
En fait je concatène car je préfère garder une taille de 80 caractères au maximum par ligne.
Du coup comme cela dépasse, je concatène afin de séparer sur plusieurs lignes.
La limite de 80 caractères maxi sur la ligne me permet de tous voir sans bouger l'ascenseur (et pourtant je suis en 1280x1024).
|
|
samedi 26 juillet 2008 à 23:43:21 |
Re : Placer des données d'un TFileStream dans un TMemoryStream

Bacterius
|
Bonjour, ah ok c'est pour une raison de confort ! je pensais qu'il s'agissait d'une limite technique de passage en paramètre dont j'aurais ignoré l'existence (comme le passage maximum de 256 caractères en SharedMem, donc PChar ou shortstring plutot que String). Bon ben bonne fin de soirée :p Cordialement, Bacterius !
Copyright = RIGHT TO COPY
|
|
Cette discussion est classée dans : données, placer, richedit, memorystream, tmemorystream
Répondre à ce message
Sujets en rapport avec ce message
Passer des objets à une DLL [ par christophedlr ]
Bonsoir, A la suite du problème que j'avais ici : http://www.delphifr.com/infomsg_PLACER-DONNEES-TFILESTREAM-DANS-TMEMORYSTREAM_1178462.aspx J'ai un
Problème avec un TMemoryStream [ par Bestiol ]
Salut à tous !!!J'utilise dans mon prog un TMemoryStream, dont j'aimerais modifier la taille avec SetSize... Le seul problème c'est que les données co
TMemoryStream [ par informatixo ]
Bonjour,Voilà, je sauve le texte d'un richedit dans dans un TMemoryStream par le biais de SaveToStream.Ensuite, pour vérifier que tout fonctionne j'ef
Crée dynamiquement un tab et y placer 2 RichEdit [ par taye78 ]
Salut, j'aimerais savoir comment crée dynamiquement un tab (ds un TabbedNotebook) enfin sa encore je sais comment faire (NomDuControle.Pages.Add();) m
Tmemorystream et mediaplayer [ par zjb ]
J'ai un problème lorsque j'utlise un tmediaplayer et que je souhaite charger un son à partir d'un stream, il ne les charges qu'a partir d'un chemin su
pagecontrol et richedit [ par cyberphp ]
salut,je voudrais savori comment faire pour quand je clique sur un bouton nouveau, sa m'ajoute un onglet a un pagecontrol et dessus, j'ai un richedit
Problème de DELETE sur db4 avec ADO [ par barttabac ]
Slt à tous,J'utilise une base de données db4 en utilisant ADO, sous Delphi 6. Pour faire des INSERT ou UPDATE, pas de problème, tout se passe bien.Par
envoie de données attachées à un message [ par nicolaspennaneach ]
Je souhaite transmettre une structure attachée à un message.peut-on utiliser CopyDataStruct avec des messages que l'on se défini comme par exemple WM_
bases de données: "Aucun index actif actuellement" [ par niko72 ]
Bonjour à tous les amis du Delphi,je ne connais à peu près rien en gestion de bases de données,sur un"TableG.FindKey([tache,fonction,operation])",Delp
Utiliser données d'une boite de dialogue [ par kisskool ]
Bon, j'avais posté un message hier mais on m'a envoyé pleins de message pour me dire qu'on avait pas bien capté ce que je voulais . Alors voici une ve
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|