cs_mounjetado
Messages postés66Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 4 août 2008
-
3 juil. 2006 à 11:35
cs_mounjetado
Messages postés66Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 4 août 2008
-
5 oct. 2007 à 12:20
try
bonjour,
qqn pourrait-il me tuyauter avec de vrais exemples à l'appui, pourt utiliser les strems de tous genres?
voilà mon problème:
j'ai une appli multithreads. un thread mesure tranquille ses mesures sur le port parallèle. pour l'instant je les transmets à ma fiche pour les afficher via un tthreadlist pour les afficher ds un tlistbox. tt baigne mais au bout de qqs secondes on sent que ça commence à patauger.
l'idée m'est venue d'utiliser les streams pour balancer mes données qui pour l'instant sont brutes (des calculs sont à prévoir avant affichage, et même un graphique raffraîchi régulièrement; le tout devant fonctionner avec 1000 mesures par secondes en continu jusqu'à 3 millions de cycles à 1Hz).
partout je ne trouve que des exemples de streams utilisés dans la mm procédure, alors que moi je cherche à écrire dans une méthode dans un stream, qui pourra être lu dans une autre méthode.
tout ça pour gagner un max de temps processeur et garder un cadencement régulier de mes mesures.
finally
merci à tousssssssssssssssssssss sans exception!
end;
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 3 juil. 2006 à 13:10
salut,
c'est simple tu déclares ta varaible MemoryStream en variable
globale tu l'affectes dans la première procédure et tu le récupères
dans la seconde
si tu veux un exemple vas voir le module Phone de la source videosurveillance
ICI
dans la procedure PlayFile je charge le fichier dans le memorystream::
procedure TFPhone.PlayFile(FileName: String);
begin
.
.
.
DataStream.Clear;
DataStream.LoadFromFile(FileName); //charge le fichier
DataStream.Seek(0, soFromBeginning);
SendMessage.Enabled:=true; //envoie le message
end;
que j'utilise dans nextblock
procedure TFPhone.NextBlock;
const
BufSize = 4096;
var
i: Integer;
RData: array[1..4096] of Char;
Data: array[1..9200] of Char;
BytesCount, ReadCount: Longint;
begin
BytesCount := 0;
ReadCount := DataStream.Read(RData, BufSize);
if readcount=0 then
begin
SendMessage.Enabled:=false;
exit;
end;
ici on fait le traitement
.
.
end;
comme tu le vois c'est très simple ce n'est qu'un flux de données
: C'est comme si tu ouvrais un fichier dans une procédure et que tu
l'utilises dans une autre
cs_mounjetado
Messages postés66Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 4 août 2008 5 oct. 2007 à 12:20
@jlen: je suis enfin arrivé au point de m'attaquer au stream pour passer mes mesures... une question cependant...la méthode SendMessage a-t-elle qqch à voir avec la bonne utilisation de TMemoryStream ou est-ce employé dans le cadre de ton application?