<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SED-P.NET</title>
	<link>http://www.sed-p.net/</link>
	<description>Encore un site perso sur l'informatique... Un peu d'info sur du développement, en delphi / pascal et du .net, quelques informations sur la VoIP, un logiciel utile aux administrateurs de serveur de messagerie... plein de bonnes et moins bonnes choses, servez-vous c'est gratuit !</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>



	



	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Sed-pnet" /><feedburner:info uri="sed-pnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Qu'est ce que le marketing direct ?</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/agRdJ53qq8A/Qu-est-ce-que-le-marketing-direct.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Qu-est-ce-que-le-marketing-direct.html</guid>
		<dc:date>2008-05-26T15:29:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Informatique-En-general-.html">Informatique (En général)</category>


		<description>Vous accompagner dans votre gestion de la relation clients, lisser/ augmenter vos résultats commerciaux : Formation (télévente, prise de RDV), Conseil, base de données, Centre d'appels intégré (prospection tél avec prise de RDV, télévente, détection de projets, études de satisfaction, etc).

-
&lt;a href="http://www.sed-p.net/-Informatique-En-general-.html" rel="directory"&gt;Informatique (En général)&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">Le marketing direct est une technique de communication et de vente qui consistent à s'adresser directement au consommateur de façon personnalisée. Il s'agit d'exploiter des <a href="http://www.pro-contact.fr/bases-de-donnees.html" class="spip_out">bases de données</a>, plus précisément de <a href="http://www.pro-contact.fr/prospects.html" class="spip_out">contacter des prospects</a> ou des clients présents dans les fichiers nominatifs. Cette méthode consiste à choisir judicieusement la cible à partir d'un fichier informatique, à élaborer un argumentaire de vente et à contacter les personnes par le support le plus adapté : courrier, téléphone, fax, e-mail, sms, web.</p> <p class="spip">Le marketing direct peut avoir deux objectifs : <br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> la conquête de nouveaux clients. L'identification des nouvelles cibles, la prise de RDV sont des étapes cruciales pour recruter de nouveaux prospects et les transformer en clients. <br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> la <a href="http://www.pro-contact.fr/clients.html" class="spip_out">fidélisation des clients</a>. Un consommateur fidèle coûte moins cher à la marque ou à l'enseigne que le recrutement d'un nouveau consommateur. Le marketing direct intervient pour entretenir la relation entre l'entreprise et ses clients.</p> <p class="spip">La forme que peut vêtir le marketing direct s'est développée et s'est diversifier depuis ces dernières années, surtout avec les nouveaux moyens de télécommunication. Comme exemple on pourra citer le cas de la téléphonie, qui permet de réduire sensiblement le coût des démarches entreprises au téléphone, pour une vente directe ou des demandes de renseignements, d'où la propagation incessante du <a href="http://www.pro-contact.fr/index.html" class="spip_out">télémarketing</a>.</p> <p class="spip">Pour plus d'informations sur le <a href="http://www.pro-contact.fr" class="spip_out">marketing direct</a>.</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/F60rBsx8WV31ViqIkTgtW3MkC1o/0/da"><img src="http://feedads.g.doubleclick.net/~a/F60rBsx8WV31ViqIkTgtW3MkC1o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/F60rBsx8WV31ViqIkTgtW3MkC1o/1/da"><img src="http://feedads.g.doubleclick.net/~a/F60rBsx8WV31ViqIkTgtW3MkC1o/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/agRdJ53qq8A" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/Qu-est-ce-que-le-marketing-direct.html</feedburner:origLink></item>



	<item>
		<title>POPtm - Historique des versions</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/kQRa7areXgQ/POPtm-Historique-des-versions.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/POPtm-Historique-des-versions.html</guid>
		<dc:date>2007-10-31T06:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html">POPtm (transfert POP vers SMTP)</category>

		<dc:subject>Windows</dc:subject>

		<description>La liste des évolutions de POPtm, entre nouvelles fonctions et corrections de bugs. POPtm est un connecteur POP pour serveur de messagerie avec fonction antivirus...

-
&lt;a href="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html" rel="directory"&gt;POPtm (transfert POP vers SMTP)&lt;/a&gt;

/ 
&lt;a href="http://www.sed-p.net/+-Windows-+.html" rel="tag"&gt;Windows&lt;/a&gt;

		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><center> <script type="text/javascript"><!-- google_ad_client = "pub-8519611063689414"; /* 468x60, créé le 16/02/08 */ google_ad_slot = "7096481370"; google_ad_width = 468; google_ad_height = 60; google_cpa_choice = ""; // on file //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </center>
<center>
<h3 class="spip">POPtm se trouve sur Sourceforge !</h3>
<p class="spip">Pour les dernières versions rendez-vous sur <a href="http://sourceforge.net/projects/poptm/" class="spip_out">POPtm / Sourceforge</a>.</p> <p class="spip"><a href="http://sourceforge.net/project/showfiles.php?group_id=194519" class="spip_out">Télécharger POPtm</a></p> </center>
<hr class="spip" />
<h3 class="spip"> v1 (1.2.24) - 30/04/2007</h3>
<p class="spip">La version 1.2.24 corrige certains aspects de POPtm 1.2.23.</p> <p class="spip">Entre autre :
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Lors de la demande de l'arrêt, les POP3 et SMTP sont coupés immédiatement,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> POPtm est protégé contre les serveurs POP qui ralentissent les connections par un nouveau système d'abandon,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Mise à jour des bases pour ClamAV.</p> <h3 class="spip"> v1 (1.2.23) - 11/04/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction du bug bizarre "No IOHandler of type TIdSSLIOHandlerSocketOpenSSL is installed" sur certains comptes POP en SSL, <br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction sur le traitement de ClamAV.</p> <p class="spip">Setup : <a href="http://www.sed-p.net/Fichiers/POPtm/POPtmSetup_1.2.23.exe" class="spip_out">POPtm 1.2.23</a></p> <h3 class="spip"> v1 (1.2.22) - 10/04/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction du problèmes planning / horaires (Merci beaucoup Arnaud). <br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> traitement partiel des "invalid adress" : <br />— si l'adresse de l'expéditeur pose problème, POPtm la remplace par celle du postmaster.
<br />— si c'est celle du destinataire, cela passe sur l'adresse générique de l'entreprise.
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> En cas de mail bloquant sur un compte POP, une erreur est signalé et le mail est "sauté". A l'avenir ce mail sera supprimé.</p> <p class="spip">Setup : <a href="http://www.sed-p.net/Fichiers/POPtm/POPtmSetup_1.2.22.exe" class="spip_out">POPtm 1.2.22</a></p> <h3 class="spip"> v1 (1.2.21) - 25/03/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> ClamAV 0.90.1 + possibilité de donner un chemin pour clamscan et les définition de virus,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction de la lecture POP3, toujours pour les "Max line exceed..."
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction du serveur SMTP interne, meilleurs réponses SMTP pour ne pas être considéré comme un relais SMTP sur les outils de tests présent sur internet.</p> <p class="spip">Setup : <a href="http://www.sed-p.net/Fichiers/POPtm/POPtmSetup_1.2.21.exe" class="spip_out">POPtm 1.2.21</a></p> <h3 class="spip"> v1 (1.2.20) - 26/02/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction de l'erreur "max line exceed..."</p> <p class="spip">Setup : <a href="http://www.sed-p.net/Fichiers/POPtm/POPtmSetup_1.2.20.exe" class="spip_out">POPtm 1.2.20</a></p> <h3 class="spip"> v1 (1.2.19) - 13/02/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Corrections sur l'interface + affichage code erreur de clamAV</p> <h3 class="spip"> v1 (1.2.17) - 25/01/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Ajout des listes MSRBL (SPAM) pour ClamAV + mise à jour automatique de ces bases.</p> <h3 class="spip"> v1 (1.2.16) - 05/01/2007</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Limite des taux de transferts, nombre de mail téléchargé,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Le journal s'enregistre dans un fichier texte,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Possibilité de modifier le certificat du site web.</p> <h3 class="spip"> v1 (1.2.11) - 08/12/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Modification du multitâche. Choix de configuration en plus.</p> <h3 class="spip"> v1 (1.2.10) - 04/12/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Ajout de ClamAV.</p> <h3 class="spip"> v1 (1.2.9b puis c) - 16/11/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> utilisation d'un DNS blacklist pour le serveur SMTP interne,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> correction d'un bug en cas de spam refusé par le serveur.</p> <h3 class="spip"> v1 (1.2.9) - 31/10/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> POPtm permet enfin d'utiliser TLS/SSL pour se connecter au serveur SMTP,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> POPtm dispose maintenant de son propre serveur SMTP interne. Vous pouvez donc le plaçer dans une DMZ pour protéger votre serveur.</p> <h3 class="spip"> v1 (1.2.8d) - 23/06/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction d'un bug sur la possibilité de ne pas supprimer les mails sur le serveur sans les télécharger de nouveau.</p> <h3 class="spip"> v1 (1.2.8b) - 24/05/2006</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> possibilité de ne pas supprimer les mails sur le serveur sans les télécharger de nouveau,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Correction d'un bug sur la gestion des pièces jointes,</p> <h3 class="spip"> v1 (1.2.8) - 23/05/2006</h3>
<p class="spip">Futur version 1.3, la 1.2.8 est une pré-version :
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Modification de l'interface web,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Gestion des pièces jointes (changement du nom ou suppression suivant l'extension),
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Gestion des listes de diffusion (ou transfert suivant expéditeur).</p> <h3 class="spip"> v1 (1.2.7b) - 03/12/2005</h3>
<p class="spip">Bug sur le transfert SMTP. Merci à Michel D. pour le signalement.</p> <h3 class="spip"> v1 (1.2.7) - 25/11/2005</h3>
<p class="spip">Rien de nouveau, juste un bug sur la lecture des POPs.</p> <h3 class="spip"> v1 (1.2.6d) - 21/06/2005</h3>
<p class="spip">Nouvelle version en utilisant Indy 10. Correction d'un bug empéchant un message de passer si l'adresse email de l'expéditeur était incorrecte + correction du plantage du SMTP qui arrivait parfois ...</p> <h3 class="spip"> v1 (1.2.5) - 02/03/2005</h3>
<p class="spip">Ajout de la gestion du SSL pour la lecture des POPs et le transfert au serveur SMTP.</p> <h3 class="spip"> v1 (1.2.4) - 21/02/2005</h3>
<p class="spip">Ajout de la gestion d'une adresse principale dans le cas d'un POP collecteur. permet d'envoyer un email à un groupe si aucune adresse n'est reconnue par le serveur.</p> <h3 class="spip"> v1 (1.2.3) - 26/01/2005</h3>
<p class="spip">corrections mineurs.</p> <h3 class="spip"> v1 (1.2.1) - 18/01/2005</h3>
<p class="spip">Ajout du SSL pour l'administration. Ajout d'une taille maximum pour les messages (option).</p> <h3 class="spip"> v1 (1.2) - 13/01/2005</h3>
<p class="spip">POPtm est maintenant un service, il s'administre à l'aide d'un navigateur Web sur le port 9172 de la machine sur lequel il est installé. son accès peut être restreint en fournissant un mot de passe pour le compte "admin".</p> <h3 class="spip"> v1 (1.1) - 05/01/2005</h3>
<p class="spip">Correction de nombreux bogues.</p> <h3 class="spip"> v1 (1.0.7) - 07/10/2004</h3>
<p class="spip"><strong class="spip">Ajout d'une gestion des domaines</strong> En fait vous devez indiquer les domaines correspondants à votre messagerie afin que le routage des mails ne se fasse uniquement pour ces domaines.</p> <p class="spip">Cela permet d'éviter que votre serveur SMTP fasse un reroutage des mails en renvoyant par exemple une copie vers les autres expéditeurs du messages.</p> <h3 class="spip"> v1 (1.0.6) - 04/10/2004</h3>
<p class="spip">Bien qu'il soit possible de consulter autant de compte POP que l'on veut, POPtm ne consultera que 5 comptes POP à la fois afin de ne pas lancer 50 consultations en même temps (ce qui pouvait bloquer le serveur).</p> <h3 class="spip"> v1 (1.0.5) - 03/09/2004</h3>
<h3 class="spip"> v1 (1.0.4) - 01/08/2004</h3>
<p class="spip">Modification de la gestion des threads...</p> <h3 class="spip"> v1 (0.1e) - 26/07/2004</h3>
<p class="spip">Modification du traitement du contenu des eMails (en mieux aussi).</p> <h3 class="spip"> v1 (0.1d) - 09/07/2004</h3>
<p class="spip">Modification du traitement de l'entête des eMails (en mieux).</p> <h3 class="spip"> v1 (0.1c) - 08/07/2004</h3>
<p class="spip">Ajout de AUpdate (dispo sur ce site) pour permettre les mises à jours futur directement depuis le logiciel.</p> <h3 class="spip"> v1 (0.1b) Première version - 07/07/2004</h3>
<p class="spip">Voila, il est disponible...</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/X749LapTgzKxhVylBmatURy8z1o/0/da"><img src="http://feedads.g.doubleclick.net/~a/X749LapTgzKxhVylBmatURy8z1o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/X749LapTgzKxhVylBmatURy8z1o/1/da"><img src="http://feedads.g.doubleclick.net/~a/X749LapTgzKxhVylBmatURy8z1o/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/kQRa7areXgQ" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/POPtm-Historique-des-versions.html</feedburner:origLink></item>



	<item>
		<title>Xiph Speex sous dotnet</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/Q3iMPW_nRHU/Xiph-Speex-sous-dotnet.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Xiph-Speex-sous-dotnet.html</guid>
		<dc:date>2007-09-17T11:02:18Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Developpement-net-.html">Développement .net</category>


		<description>Utilisation de speex sous dotnet, projet en cours...

-
&lt;a href="http://www.sed-p.net/-Developpement-net-.html" rel="directory"&gt;Développement .net&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">Pas mal de personne recherche un moyen d'utiliser speex sous dotnet.
Je suis en train de faire justement un wrapper, je rajoute donc cette page en attendant d'avoir tout fini... <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/face1-d75d7.png" alt="sourire" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></p> <h3 class="spip">Etat du wrapper</h3>
<table class="spip">
<tbody>
<tr class="row_even"><td><i class="spip">Etat</i></td><td><i class="spip">Partie de speex</i></td></tr>
<tr class="row_odd"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/clear-df29e.png" alt="Soleil" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>encode/decode</td></tr>
<tr class="row_even"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/clear-df29e.png" alt="Soleil" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>bits</td></tr>
<tr class="row_odd"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/clouds-7d050.png" alt="Nuage" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Preprocessor</td></tr>
<tr class="row_even"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Callbacks</td></tr>
<tr class="row_odd"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Echo</td></tr>
<tr class="row_even"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Header</td></tr>
<tr class="row_odd"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Jitter</td></tr>
<tr class="row_even"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Stereo</td></tr>
<tr class="row_odd"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/clouds-7d050.png" alt="Nuage" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Demo : Speexenc</td></tr>
<tr class="row_even"><td> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/stop-8ec75.png" alt="Stop" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' /></td><td>Demo : speexdec</td></tr>
</tbody>
</table>
<h3 class="spip">Téléchargement</h3>
<dl class='spip_document_88 spip_documents spip_documents_center' >
<dt><a href="http://www.sed-p.net/IMG/zip/Xiph_Speex_dotnet-2.zip" title='Zip - 156 ko' type="application/zip"><img src='http://www.sed-p.net/local/cache-vignettes/L52xH52/zip-581d9.png' width='52' height='52' alt='Zip - 156 ko' style='height:52px;width:52px;' class=' format_png' /></a></dt>
<dt class='spip_doc_titre' style='width:120px;'><strong>Xiph Speex dotnet</strong></dt>
</dl>
<p class="spip"> <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/important-67056.png" alt="ATTENTION" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' />Comme expliqué ce fichier ne contient pas un wrapper complet !</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/wYtxsDsGK04vhtTVSH-o7L_SnmA/0/da"><img src="http://feedads.g.doubleclick.net/~a/wYtxsDsGK04vhtTVSH-o7L_SnmA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wYtxsDsGK04vhtTVSH-o7L_SnmA/1/da"><img src="http://feedads.g.doubleclick.net/~a/wYtxsDsGK04vhtTVSH-o7L_SnmA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/Q3iMPW_nRHU" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/Xiph-Speex-sous-dotnet.html</feedburner:origLink></item>



	<item>
		<title>Speex / Delphi</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/o3fYhK1d_Is/Speex-pour-Delphi.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Speex-pour-Delphi.html</guid>
		<dc:date>2007-09-03T22:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Developpement-Pascal-Delphi-.html">Développement (Pascal / Delphi)</category>


		<description>Utilisation du codec speex (libspeex.dll) avec Delphi. Speex permet une compression audio utilisable en VoIP par exemple. Cet article offre une démo pour Speex version 1.0.5 ainsi que la 1.2

-
&lt;a href="http://www.sed-p.net/-Developpement-Pascal-Delphi-.html" rel="directory"&gt;Développement (Pascal / Delphi)&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">(<a href="http://www.sed-p.net/Xiph-Speex-sous-dotnet.html" class="spip_in">Pour speex et dotnet, c'est par là</a>)</p> <p class="spip">Dur dur de trouver des infos sur le net pour utiliser le codec <a href="http://www.speex.org" class="spip_out">Speex</a> sous Delphi <img src="http://www.sed-p.net/local/cache-vignettes/L16xH16/face4-c9799.png" alt="triste" class='smiley format_png' width='16' height='16' style='height:16px;width:16px;' />.</p> <p class="spip">Ayant eu du mal, je vous propose donc d'en profiter en utilisant le fichier joint (en bas de page).
Il s'agit du projet que l'on trouve sur le site de <a href="http://fr.wikipedia.org/wiki/speex" class="spip_glossaire">speex</a> : <a href="http://speex.org/software/" class="spip_out">http://speex.org/software/</a>. Il manque des fichiers dans la démo d'origine, j'ai donc fait les modifications pour que tout soit fonctionnel.</p> <dl class='spip_document_87 spip_documents spip_documents_center' >
<dt><a href="http://www.sed-p.net/IMG/zip/Speex_Delphi_Demo.zip" title='Zip - 708.7 ko' type="application/zip"><img src='http://www.sed-p.net/local/cache-vignettes/L52xH52/zip-581d9.png' width='52' height='52' alt='Zip - 708.7 ko' style='height:52px;width:52px;' class=' format_png' /></a></dt>
<dt class='spip_doc_titre' style='width:120px;'><strong>Speex delphi demo</strong></dt>
</dl>
<p class="spip">Le fichier zip contient :</p> <p class="spip"> Speex 1.0
<br />— libspeex.dll (speex-1.2beta2)
<br />— speex.pas
<br />— le projet "Speex_Delphi_Demo" que l'on trouve sur le net malheureusement sans les fichiers précédents (Cet exemple utilise uniquement les fonctions de la libspeex version 1.0.5).</p> <p class="spip"> Speex 1.2
<br />— libspeex.dll (speex-1.2beta2)
<br />— speex.pas (nouvelle version)
<br />— le projet "Speex_Delphi_Demo" modifié.</p> <p class="spip">version originale : <a href="http://speex.org/software/download/Speex_Delphi_Demo.zip" class="spip_out">delphi speex demo</a></p> <h3 class="spip">Dernière version du fichier Speex.pas pour la libspeex >= v1.1</h3>
<p class="spip">Ce fichier <strong class="spip">speex.pas</strong> permet d'utiliser la version 1.1 ou 1.2 de la libspeex. Elle permet donc entre autre les fonctions <strong class="spip">speex_encode_int</strong> et <strong class="spip">speex_decode_int</strong> ainsi que celles du préprocesseur tel que <strong class="spip">speex_preprocess</strong>.</p> <h3 class="spip">Format des données pour speex</h3>
<p class="spip">speex utilise, jusqu'a la version 1.0, un tableau de <strong class="spip">single</strong> pour traiter les données audio.</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">speex_encode: <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>state: PSpeexState; in_:<span style="color: #993333;">PSingle</span>; bits: PSpeexBits<span style="color: #66cc66;">&#41;</span>: <span style="color: #993333;">Integer</span> <span style="color: #000000; font-weight: bold;">cdecl</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">speex_decode: <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>state: PSpeexState; bits: PSpeexBits; out_: <span style="color: #993333;">PSingle</span><span style="color: #66cc66;">&#41;</span>: <span style="color: #993333;">Integer</span> <span style="color: #000000; font-weight: bold;">cdecl</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/5594062bea9c63977d3b1b769f42a789.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">A partir de la version 1.1, on peut utiliser un tableau de type entier sur 16bits signé (SmallInt). Pour cela on fait appel aux fonctions :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">speex_encode_int: <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>state: PSpeexState; in_:<span style="color: #993333;">PSmallInt</span>; bits: PSpeexBits<span style="color: #66cc66;">&#41;</span>: <span style="color: #993333;">Integer</span> <span style="color: #000000; font-weight: bold;">cdecl</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">speex_decode_int: <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>state: PSpeexState; bits: PSpeexBits; out_: <span style="color: #993333;">PSmallInt</span><span style="color: #66cc66;">&#41;</span>: <span style="color: #993333;">Integer</span> <span style="color: #000000; font-weight: bold;">cdecl</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/6b8fda7bfb961e3b3297eb5a4e0378ff.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Dans tout les cas, quand vous utiliser la taille d'une frame, il s'agit du nombre de valeur et non le nombre d'octet. Vous devez prendre cela en considération car sinon vous allez avoir des erreurs d'accès mémoire.</p> <p class="spip">Explication : si une frame fait 160 en taille et que vous encoder en SmallInt, il vous faut deux fois plus d'octet ( sizeof(smallint) = 2 ) et 4 fois plus en Single.</p> <p class="spip">Dans les exemple qui suivent, j'utilise des SmallInt donc vous verez parfois dans mon code des "encframe*2" pour obtenir une taille en octet.</p> <h3 class="spip">Encodage avec speex</h3>
<p class="spip">Pour commencer, en toute logique vous aurez besoin de quelques variables :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encbits: TSpeexBits;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encstate: PSpeexState;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encprestate: PSpeexPreprocessState;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encframe: <span style="color: #993333;">integer</span>; <span style="color: #808080; font-style: italic;">// taille d'une frame</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> buffBytes: <span style="color: #000000; font-weight: bold;">array</span> <span style="color: #000000; font-weight: bold;">of</span> <span style="color: #993333;">byte</span>; <span style="color: #808080; font-style: italic;">// tampon pour l'encodage</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> smpRt: <span style="color: #993333;">integer</span>; <span style="color: #808080; font-style: italic;">// taux de capture</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> q,i : <span style="color: #993333;">Integer</span>; <span style="color: #808080; font-style: italic;">// pour passer des paramètres lors de la config</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/d7c26bc0c38f4cc31353f6310bb67cec.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Ces variables sont donc initialisées :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Pour charger la DLL</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> Speex_Load_DLL;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Préparer une structure speex_bits</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_init<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Préparer un structure pour l'encodage</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encstate := speex_encoder_init<span style="color: #66cc66;">&#40;</span>speex_lib_get_mode<span style="color: #66cc66;">&#40;</span>SPEEX_MODEID_NB<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> q := <span style="color: #cc66cc;">10</span>; <span style="color: #808080; font-style: italic;">// qualité d'encodage speex</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> smpRt := <span style="color: #cc66cc;">8000</span>; <span style="color: #808080; font-style: italic;">// Taux de notre capture audio</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate,SPEEX_SET_SAMPLING_RATE,@smpRt<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate,SPEEX_SET_QUALITY,@q<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate,SPEEX_SET_VBR_QUALITY,@q<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate, SPEEX_SET_VBR, @i<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Active le mode VBR</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate, SPEEX_SET_VAD, @i<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Active la détection de voix</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Obtenir la taille d'une frame</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encoder_ctl<span style="color: #66cc66;">&#40;</span>encstate,SPEEX_GET_FRAME_SIZE,@encframe<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Prépare la structure du préprocesseur</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> encprestate := speex_preprocess_state_init<span style="color: #66cc66;">&#40;</span>encframe, smpRt<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Initialise le préprocesseur : DENOISE, AGC, VAD et DEREVERB</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_preprocess_ctl<span style="color: #66cc66;">&#40;</span>encprestate, SPEEX_PREPROCESS_SET_DENOISE, @i<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_preprocess_ctl<span style="color: #66cc66;">&#40;</span>encprestate, SPEEX_PREPROCESS_SET_AGC, @i<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_preprocess_ctl<span style="color: #66cc66;">&#40;</span>encprestate, SPEEX_PREPROCESS_SET_VAD, @i<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">1</span>; speex_preprocess_ctl<span style="color: #66cc66;">&#40;</span>encprestate, SPEEX_PREPROCESS_SET_DEREVERB, @i<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/8c03542ed8067b6f73c9f216de238919.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">On pense <strong class="spip">de suite</strong> à prévoir la libération de ces variables dans une procédure style "OnClose" ou "Destroy" (Comme cela on est tranquile après...) :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_preprocess_state_destroy<span style="color: #66cc66;">&#40;</span>encprestate<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_destroy<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encoder_destroy<span style="color: #66cc66;">&#40;</span>encstate<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/7ad3ff662874b5b7b2fe81e503e73824.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Voila, maintenant je suppose que vous savez capture de l'audio et plaçer les échantillons dans un <strong class="spip">buffer</strong> du type "Array of smallint" (entier sur 16bit).</p> <p class="spip">Dans ce premier exemple, <strong class="spip">buffer</strong> est donc un tableau de taille égale à une frame speex (variable <strong class="spip">encframe</strong>) :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_preprocess<span style="color: #66cc66;">&#40;</span>encprestate, @Buffer<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encode_int<span style="color: #66cc66;">&#40;</span>encstate, @Buffer<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, @encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// sz contient le nombe d'octet à écrire / prévoir</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> sz := speex_bits_nbytes<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// On prépare la taille du tampon qui contiendra les données encodées</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">length</span><span style="color: #66cc66;">&#40;</span>buffBytes<span style="color: #66cc66;">&#41;</span> &lt; sz <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">SetLength</span><span style="color: #66cc66;">&#40;</span>buffBytes,sz<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// sz2 contient le nombre d'octet écrit</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> sz2 := speex_bits_write<span style="color: #66cc66;">&#40;</span>@encbits,@buffBytes<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>,sz<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// on vide l'état d'encodage</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_reset<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// il ne reste plus qu'a transmettre ou enregistrer le tableau buffBytes...</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/ea7857f9ca8d0e1aa75b9871272137e2.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Dans le code suivant, le buffer capturé est plus grand qu'une frame speex (un multiple de cette taille) et l'encodage va se faire sur plusieurs frames. <strong class="spip">size</strong> contient la taille total des données capturées.</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := <span style="color: #cc66cc;">0</span>; <span style="color: #808080; font-style: italic;">// on compte le nombre de frame déjà encodée</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> l := size; <span style="color: #808080; font-style: italic;">// taille restante dans le buffer</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">while</span> l &gt;= encframe <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #000000; font-weight: bold;">begin</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Encode the sound data //</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_preprocess<span style="color: #66cc66;">&#40;</span>encprestate, @Buffer<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span>i*encframe<span style="color: #66cc66;">&#41;</span>*<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #000000; font-weight: bold;">nil</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_encode_int<span style="color: #66cc66;">&#40;</span>encstate, @Buffer<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#40;</span>i*encframe<span style="color: #66cc66;">&#41;</span>*<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span>, @encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> l := l - <span style="color: #66cc66;">&#40;</span>encframe*<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := i + <span style="color: #cc66cc;">1</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// sz contient le nombe d'octet à écrire / prévoir</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> sz := speex_bits_nbytes<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #000066;">length</span><span style="color: #66cc66;">&#40;</span>buffBytes<span style="color: #66cc66;">&#41;</span> &lt; sz <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">SetLength</span><span style="color: #66cc66;">&#40;</span>buffBytes,sz<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// sz2 contient le nombre d'octet écrit</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> sz2 := speex_bits_write<span style="color: #66cc66;">&#40;</span>@encbits,@buffBytes<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>,sz<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">//</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_reset<span style="color: #66cc66;">&#40;</span>@encbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/9b3a7d016378875098c51acf61fa557a.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<h3 class="spip">Décodage de speex</h3>
<p class="spip">Egalement quelques variables :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> decbits: TSpeexBits;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> decstate: PSpeexState;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> decframe: <span style="color: #993333;">integer</span>; <span style="color: #808080; font-style: italic;">// taille d'une frame</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> buffDec: <span style="color: #000000; font-weight: bold;">array</span> <span style="color: #000000; font-weight: bold;">of</span> <span style="color: #993333;">SmallInt</span>; <span style="color: #808080; font-style: italic;">// décodage d'une frame</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/cb6f4e5ca0572406630586150bcda6a5.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Ces variables sont donc initialisées :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// Pour charger la DLL</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> Speex_Load_DLL; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_init<span style="color: #66cc66;">&#40;</span>@decbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> decstate := speex_decoder_init<span style="color: #66cc66;">&#40;</span>speex_lib_get_mode<span style="color: #66cc66;">&#40;</span>SPEEX_MODEID_NB<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_decoder_ctl<span style="color: #66cc66;">&#40;</span>decstate,SPEEX_GET_FRAME_SIZE,@decframe<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000066;">SetLength</span><span style="color: #66cc66;">&#40;</span>buffDec, decframe<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_reset<span style="color: #66cc66;">&#40;</span>@decbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/98062f4196605029d5e59fe84f41608b.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Comme toujours on pense à prévoir la libération de ces variables :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_destroy<span style="color: #66cc66;">&#40;</span>@decbits<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_decoder_destroy<span style="color: #66cc66;">&#40;</span>decstate<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/feb71dfb477589bee0df350396f265d5.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">Voila, on va maintenant décoder un <strong class="spip">buffer</strong> de taille <strong class="spip">size</strong> qui peu contenir une ou plusieurs frames :</p> <div class="coloration_code"><div class="spip_delphi cadre"><div class="delphi" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// On commence par lire la totalité des données encodées, zou...</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> speex_bits_read_from<span style="color: #66cc66;">&#40;</span>@decbits,@buffer<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>,size<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// on prépare la taille du buffer en fonction de celle d'une frame</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">if</span> decframe &gt; <span style="color: #000066;">length</span><span style="color: #66cc66;">&#40;</span>buffDec<span style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #000066;">SetLength</span><span style="color: #66cc66;">&#40;</span>buffDec,decframe<span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">repeat</span> <span style="color: #808080; font-style: italic;">// tant qu'il y a des données à décoder</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i := speex_decode_int<span style="color: #66cc66;">&#40;</span>decstate,@decbits,@buffDec<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">if</span> i = <span style="color: #cc66cc;">0</span> <span style="color: #000000; font-weight: bold;">then</span> <span style="color: #808080; font-style: italic;">// une frame décodée</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// moi je la met dans un stream...</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> AudioStream.<span style="color: #000066;">Write</span><span style="color: #66cc66;">&#40;</span>buffDec<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #66cc66;">&#40;</span>decframe*<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #000000; font-weight: bold;">until</span> i &lt;&gt; <span style="color: #cc66cc;">0</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/4bddde2f3242ee69a1621904c2e8138c.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/o1TWyAdc1LbRXseQhDNWznC77lg/0/da"><img src="http://feedads.g.doubleclick.net/~a/o1TWyAdc1LbRXseQhDNWznC77lg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/o1TWyAdc1LbRXseQhDNWznC77lg/1/da"><img src="http://feedads.g.doubleclick.net/~a/o1TWyAdc1LbRXseQhDNWznC77lg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/o3fYhK1d_Is" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/Speex-pour-Delphi.html</feedburner:origLink></item>



	<item>
		<title>VB.NET et OpenGL (TAO framework)</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/BBQn2lfAJQc/VB-NET-et-OpenGL.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/VB-NET-et-OpenGL.html</guid>
		<dc:date>2007-08-01T20:39:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Developpement-net-.html">Développement .net</category>


		<description>Utiliser OpenGL avec VB.NET, mes premiers pas avec le TAO framework

-
&lt;a href="http://www.sed-p.net/-Developpement-net-.html" rel="directory"&gt;Développement .net&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">Voila j'ai voulu tester OpenGL, c'est la mode la 3D en ce moment surtout avec Vista (j'ai pas testé encore..).</p> <p class="spip">Par contre pour trouver de bonnes informations sur OpenGL et vb.net c'est déjà plus difficile.</p> <p class="spip">Alors j'ai téléchargé le <a href="http://www.taoframework.com/" class="spip_out">TAO Framework</a>, dans sa version 2.0 et je me suis pris la tête sur VBExpress 2005.</p> <p class="spip">Au final, je vous propose deux archives contenant deux projets VB.NET avec deux manières différentes d'utiliser TAO :
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Avec le composant <i class="spip">SimpleOpenGlControl</i>,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> En codant la création du context OpenGL.</p> <h3 class="spip">Le composant SimpleOpenGlControl</h3>
<p class="spip">Avec ce control il reste peu de chose à faire pour obtenir un premier résultat.</p> <dl class='spip_document_84 spip_documents spip_documents_center' >
<dt><a href="http://www.sed-p.net/IMG/zip/sedp.ogl.test.zip" title='Zip - 742.9 ko' type="application/zip"><img src='http://www.sed-p.net/local/cache-vignettes/L52xH52/zip-581d9.png' width='52' height='52' alt='Zip - 742.9 ko' style='height:52px;width:52px;' class=' format_png' /></a></dt>
<dt class='spip_doc_titre' style='width:120px;'><strong>VB.NET OpenGL 1</strong></dt>
</dl>
<h3 class="spip">coder la création du context OpenGL</h3>
<p class="spip">Comme c'est un peu plus compliqué, je me suis fait un module (GLFramework) qui contient les fonctions de base ainsi que le formulaire qui va héberger le context OpenGL.
Un second module contient les fonctions propres au programme tel que InitGL, DrawGLScene ... Il s'agit de l'adaptation du "NeHe tutorial - lesson 5" :</p> <dl class='spip_document_85 spip_documents spip_documents_center' >
<dt><a href="http://www.sed-p.net/IMG/zip/sedp.ogl.test2.zip" title='Zip - 762.8 ko' type="application/zip"><img src='http://www.sed-p.net/local/cache-vignettes/L52xH52/zip-581d9.png' width='52' height='52' alt='Zip - 762.8 ko' style='height:52px;width:52px;' class=' format_png' /></a></dt>
<dt class='spip_doc_titre' style='width:120px;'><strong>VB.NET OpenGL 2</strong></dt>
</dl>
<p class="spip">Ce qui nous donne :</p> <p class="spip"><span class='spip_document_86 spip_documents spip_documents_center' >
<img src='http://www.sed-p.net/local/cache-vignettes/L450xH333/ogl.test2-757b1.png' width='450' height='333' alt="" style='height:333px;width:450px;' class=' format_png' /></span></p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/wrc-89wdb8IugJEsubV99GQyDuI/0/da"><img src="http://feedads.g.doubleclick.net/~a/wrc-89wdb8IugJEsubV99GQyDuI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wrc-89wdb8IugJEsubV99GQyDuI/1/da"><img src="http://feedads.g.doubleclick.net/~a/wrc-89wdb8IugJEsubV99GQyDuI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/BBQn2lfAJQc" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/VB-NET-et-OpenGL.html</feedburner:origLink></item>



	<item>
		<title>Sondage POPtm</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/9Qm4fUg_J9s/Sondage-POPtm.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Sondage-POPtm.html</guid>
		<dc:date>2007-04-12T22:03:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html">POPtm (transfert POP vers SMTP)</category>


		<description>Et bien oui, un petit sondage cela ne fait pas de mal pour se faire une idée de votre utilisation de POPtm...

-
&lt;a href="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html" rel="directory"&gt;POPtm (transfert POP vers SMTP)&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><center> <script type="text/javascript"><!-- google_ad_client = "pub-8519611063689414"; /* 468x60, créé le 16/02/08 */ google_ad_slot = "7096481370"; google_ad_width = 468; google_ad_height = 60; google_cpa_choice = ""; // on file //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </center>
<p class="spip">Et bien oui, un petit sondage cela ne fait pas de mal pour se faire une idée de votre utilisation de POPtm.</p> <p class="spip">Merci d'avance pour vos réponses.</p> <a name='form1'></a>
<div class='spip_forms'> <div class='spip_descriptif'>Sondage sur votre utilisation de POPtm et vos attentes</div> <form method='post' action='rss.xml#form1' enctype='multipart/form-data'> <div> <input type='hidden' name='ajout_reponse' value='1' /> <input type='hidden' name='id_donnee' value='0' /> <input type='hidden' name='retour_form' value='' /> <input type='hidden' name='ajout_cookie_form' value='oui' /> </div> <fieldset><legend>Pour commencer ...</legend> <div class='spip_form_champ select_1'> <span class='spip_form_label'> <span class='label'>Vous utilisez POPtm à titre</span> : </span> <select name='select_1' id='input-1-select_1' class='fondo'> <option value=''></option> <option value='select_1_1' > perso </option> <option value='select_1_2' > professionnel </option> <option value='select_1_3' > Les deux </option> <option value='select_1_4' > Je ne l'utilise pas ! </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_2'> <span class='spip_form_label'> <span class='label'>Depuis environ</span> : </span> <select name='select_2' id='input-1-select_2' class='fondo'> <option value=''></option> <option value='select_2_1' > Moins d'un mois </option> <option value='select_2_2' > Moins de six mois </option> <option value='select_2_3' > Plus de six mois </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_3'> <span class='spip_form_label'> <span class='label'>En tant que</span> : </span> <select name='select_3' id='input-1-select_3' class='fondo'> <option value=''></option> <option value='select_3_1' > Application </option> <option value='select_3_2' > Service </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_4'> <span class='spip_form_label'> <span class='label'>Sous windows ... </span> : </span> <select name='select_4' id='input-1-select_4' class='fondo'> <option value=''></option> <option value='select_4_1' > 95/98/Me </option> <option value='select_4_2' > 2000/XP/2003 </option> <option value='select_4_3' > Vista </option> </select> <span class='nettoyeur'> </span> </div> </fieldset><fieldset><legend>Utilisation de POPtm</legend> <div class='spip_form_champ multiple_1'> <span class='spip_form_label'> <span class='label'>Vous utilisez</span> : </span> <input type='hidden' name='multiple_1[]' id='input-1-multiple_1' value='' /> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_1' value='multiple_1_1' /> <label for='input-1-multiple_1_1'>Téléchargement POP3</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_2' value='multiple_1_2' /> <label for='input-1-multiple_1_2'>Téléchargement POP3 en SSL</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_3' value='multiple_1_3' /> <label for='input-1-multiple_1_3'>Réception directe SMTP</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_4' value='multiple_1_4' /> <label for='input-1-multiple_1_4'>Sauvegarde temporaire</label></li> </ul> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_5' value='multiple_1_5' /> <label for='input-1-multiple_1_5'>Vérification des P.J.</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_6' value='multiple_1_6' /> <label for='input-1-multiple_1_6'>Antivirus ClamAV</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_7' value='multiple_1_7' /> <label for='input-1-multiple_1_7'>Outils externes (en ligne de commande)</label></li> <li> <input type='checkbox' name='multiple_1[]' id='input-1-multiple_1_8' value='multiple_1_8' /> <label for='input-1-multiple_1_8'>Redirection / modification des destinataires</label></li> </ul> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ ligne_1'> <span class='spip_form_label'> <label for="input-1-ligne_1">Combien de comptes POP sont vérifiés par POPtm</label> : </span> <input type='text' name='ligne_1' id='input-1-ligne_1' value="" class=' ligne formo' size='40' /> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ ligne_2'> <span class='spip_form_label'> <label for="input-1-ligne_2">En moyenne, combien de mails passent par POPtm par jour</label> : </span> <input type='text' name='ligne_2' id='input-1-ligne_2' value="" class=' ligne formo' size='40' /> <span class='nettoyeur'> </span> </div> </fieldset><fieldset><legend>Interface d'administration</legend> <div class='spip_form_champ select_5'> <span class='spip_form_label'> <span class='label'>Une interface HTML c'est</span> : </span> <select name='select_5' id='input-1-select_5' class='fondo'> <option value=''></option> <option value='select_5_1' > Super pratique ! </option> <option value='select_5_2' > Bien, mais pas sur un port spécifique </option> <option value='select_5_3' > Bien, avec un risque d'accès d'un inconnu </option> <option value='select_5_4' > totalement nul ! </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_6'> <span class='spip_form_label'> <span class='label'>l'interface de POPtm est</span> : </span> <select name='select_6' id='input-1-select_6' class='fondo'> <option value=''></option> <option value='select_6_1' > Très simple </option> <option value='select_6_2' > utilisable </option> <option value='select_6_3' > complexe </option> <option value='select_6_4' > Inutilisable </option> </select> <span class='nettoyeur'> </span> </div> </fieldset><fieldset><legend>Evaluation de POPtm</legend> <div class='spip_form_champ select_7'> <span class='spip_form_label'> <span class='label'>fiabilité</span> : </span> <select name='select_7' id='input-1-select_7' class='fondo'> <option value=''></option> <option value='select_7_1' > La perfection </option> <option value='select_7_2' > moyennement stable </option> <option value='select_7_3' > instable </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_8'> <span class='spip_form_label'> <span class='label'>fonctionnalité</span> : </span> <select name='select_8' id='input-1-select_8' class='fondo'> <option value=''></option> <option value='select_8_1' > Tout y est ! </option> <option value='select_8_2' > Il manque quelques options / fonctions </option> <option value='select_8_3' > Peu de possiblité </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_10'> <span class='spip_form_label'> <span class='label'>Les mises à jour sont</span> : </span> <select name='select_10' id='input-1-select_10' class='fondo'> <option value=''></option> <option value='select_10_1' > Trop fréquentes et peu fiable </option> <option value='select_10_2' > Trop fréquentes </option> <option value='select_10_3' > peu fiable </option> <option value='select_10_4' > dans les temps </option> <option value='select_10_5' > rare </option> </select> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ select_9'> <span class='spip_form_label'> <span class='label'>Globalement, vous êtes</span> : </span> <select name='select_9' id='input-1-select_9' class='fondo'> <option value=''></option> <option value='select_9_1' > Très statisfait de POPtm </option> <option value='select_9_2' > Moyennement statisfait de POPtm </option> <option value='select_9_3' > Peu statisfait de POPtm </option> <option value='select_9_4' > Pas du tout statisfait de POPtm </option> </select> <span class='nettoyeur'> </span> </div> </fieldset><fieldset><legend>Evolution de POPtm</legend> <div class='spip_form_champ multiple_2'> <span class='spip_form_label'> <span class='label'>Ce qu'il manque</span> : </span> <input type='hidden' name='multiple_2[]' id='input-1-multiple_2' value='' /> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_1' value='multiple_2_1' /> <label for='input-1-multiple_2_1'>Gestion de plusieurs SMTP</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_2' value='multiple_2_2' /> <label for='input-1-multiple_2_2'>Support du IMAP4</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_3' value='multiple_2_3' /> <label for='input-1-multiple_2_3'>Un antispam type spamassassin</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_4' value='multiple_2_4' /> <label for='input-1-multiple_2_4'>Un antispam type Mailinblack (validation de l'expéditeur)</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_5' value='multiple_2_5' /> <label for='input-1-multiple_2_5'>Des traductions de l'interface</label></li> </ul> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_6' value='multiple_2_6' /> <label for='input-1-multiple_2_6'>Intégration LDAP ou AD pour vérifier les destinataires</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_7' value='multiple_2_7' /> <label for='input-1-multiple_2_7'>Des statistiques sur le traffic</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_8' value='multiple_2_8' /> <label for='input-1-multiple_2_8'>Une interface en plus pour les utilisateurs uniquement pour lire les mails en sauvegarde</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_9' value='multiple_2_9' /> <label for='input-1-multiple_2_9'>D'autre protection ...</label></li> <li> <input type='checkbox' name='multiple_2[]' id='input-1-multiple_2_10' value='multiple_2_10' /> <label for='input-1-multiple_2_10'>Rien</label></li> </ul> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ texte_1'> <span class='spip_form_label'> <label for="input-1-texte_1">Vos propositions</label> : </span> <textarea name='texte_1' rows='10' class='formo ' cols='80' id='input-1-texte_1'></textarea> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ email_1'> <span class='spip_form_label'> <label for="input-1-email_1">Votre adresse email</label> : </span> <span class='spip_form_label_details'>Veuillez entrer une adresse e-mail valide (de type vous@fournisseur.com).</span> <input type='text' name='email_1' id='input-1-email_1' value="" class=' email formo' size='40' /> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ multiple_3'> <span class='spip_form_label'> <span class='label'>Si je passe le projet sur Sourceforge.net cela</span> : </span> <input type='hidden' name='multiple_3[]' id='input-1-multiple_3' value='' /> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_1' value='multiple_3_1' /> <label for='input-1-multiple_3_1'>Ne changera rien</label></li> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_2' value='multiple_3_2' /> <label for='input-1-multiple_3_2'>Va permettre de s'impliquer dans le projet</label></li> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_3' value='multiple_3_3' /> <label for='input-1-multiple_3_3'>Va améliorer l'image du soft</label></li> </ul> <ul class="spip_form_choix_multiple"> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_4' value='multiple_3_4' /> <label for='input-1-multiple_3_4'>Va permettre de lire les sources plus facilement</label></li> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_5' value='multiple_3_5' /> <label for='input-1-multiple_3_5'>Offre un point de réunion aux utilisateurs</label></li> <li> <input type='checkbox' name='multiple_3[]' id='input-1-multiple_3_6' value='multiple_3_6' /> <label for='input-1-multiple_3_6'>autre</label></li> </ul> <span class='nettoyeur'> </span> </div> <div class='spip_form_champ texte_2'> <span class='spip_form_label'> <label for="input-1-texte_2">Autre proposition pour le "site web des utilisateurs" (qui est actuellement mon site en fait)</label> : </span> <textarea name='texte_2' rows='10' class='formo ' cols='80' id='input-1-texte_2'></textarea> <span class='nettoyeur'> </span> </div> </fieldset> <p style='display:none;'><label for="nobotnobot-1">Veuillez laisser ce champ vide :</label> <input type="text" name="nobotnobot" id="nobotnobot-1" value="" size="10" /></p> <div style='text-align:right' class='spip_bouton'><input type="submit" name='Valider' value="Valider" /></div> <script src="http://www.sed-p.net/plugins/forms_et_tables_1_9_1/javascript/jtip.js" type="text/javascript"></script> <script type="text/javascript"><!--
$('input.formo').bind('focus',function(){$(this).removeClass('formo').addClass('formo-focus');});
$('input.formo').bind('blur',function(){$(this).removeClass('formo-focus').addClass('formo');});
$('input.forml').bind('focus',function(){$(this).removeClass('forml').addClass('forml-focus');});
$('input.forml').bind('blur',function(){$(this).removeClass('forml-focus').addClass('forml');}); //--></script> </form> </div></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/0jl6w7ybN773MD2DgxxexKGX_EI/0/da"><img src="http://feedads.g.doubleclick.net/~a/0jl6w7ybN773MD2DgxxexKGX_EI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0jl6w7ybN773MD2DgxxexKGX_EI/1/da"><img src="http://feedads.g.doubleclick.net/~a/0jl6w7ybN773MD2DgxxexKGX_EI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/9Qm4fUg_J9s" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/Sondage-POPtm.html</feedburner:origLink></item>



	<item>
		<title>Mettre à jour POPtm</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/wYcSDKHhfCI/Mettre-a-jour-POPtm.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Mettre-a-jour-POPtm.html</guid>
		<dc:date>2007-03-20T08:12:42Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html">POPtm (transfert POP vers SMTP)</category>


		<description>Comment faire une mise à jour de POPtm, 2 solutions : avec le setup ou depuis POPtm

-
&lt;a href="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html" rel="directory"&gt;POPtm (transfert POP vers SMTP)&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">Quand une nouvelle version de POPtm est disponible, un email est envoyé au postmaster l'informant de la disponibilité d'une mise à jour.</p> <p class="spip">Pour faire cette mise à jour, il existe deux possibilités :</p> <h3 class="spip">Mise à jour à l'aide du setup</h3>
<p class="spip">C'est la solution la plus radicale : <br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Stoppez POPtm, y compris le service, en utilisant le fichier "uninstall.bat" qui se trouve dans le dossier de POPtm,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Installer POPtm à l'aide du setup de la nouvelle version.</p> <p class="spip">Le fichier de configuration, <i class="spip">config.xml</i>, ne fait pas partie du setup. il ne sera donc pas écrasé. Mais par sécurité, pensez à faire une copie de ce fichier (Ce que vous devriez déjà avoir fait, allez zou...)</p> <h3 class="spip">Mise à jour depuis POPtm</h3>
<p class="spip"><strong class="spip">Après la transmission du mail d'information de mise à jour</strong>, rendez-vous dans l'interface d'administration de POPtm puis :
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Cliquez sur <i class="spip">Arrêter POPtm</i>,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Cliquez sur le lien de mise à jour se trouvant en tête du menu de gauche, vous obtenez une page avec un descriptif de cette mise à jour,
<span class='spip_document_78 spip_documents spip_documents_center' >
<img src='http://www.sed-p.net/local/cache-vignettes/L177xH184/MAJ-3cd8f.png' width='177' height='184' alt="" style='height:184px;width:177px;' class=' format_png' /></span>
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Lancez le téléchargement de la mise à jour,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Suivez les instructions à l'écran, elles indiquent le nom d'un fichier à lancer pour finaliser la mise à jour. Ce fichier doit être lancer depuis le serveur sous un compte administrateur.</p> <p class="spip">Après le lancement de ce fichier batch, le service POPtm sera redémarré sous sa nouvelle version. Vous pourrez alors vérifier votre configuration et profiter des évolutions.</p> <p class="spip">PS : Si vous souhaitez avoir des informations sur la dernière version de POPtm, vous pouvez consulter la page "http(s) ://mon serveur:port<strong class="spip">/update</strong>" sur le site de configuration de votre POPtm (modifiez l'adresse en fonction de votre configuration).</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/DRvP7lSISbR1RMdbBGNNnba-2kQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/DRvP7lSISbR1RMdbBGNNnba-2kQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DRvP7lSISbR1RMdbBGNNnba-2kQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/DRvP7lSISbR1RMdbBGNNnba-2kQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/wYcSDKHhfCI" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/Mettre-a-jour-POPtm.html</feedburner:origLink></item>



	<item>
		<title>Machine virtuelle, Pascal-S et P-Code</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/-15gTJ0eoYE/Pascal-S-et-P-Code.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Pascal-S-et-P-Code.html</guid>
		<dc:date>2007-02-02T17:25:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Compilateurs-Lex-et-Yacc-.html">Compilateurs / Lex et Yacc</category>


		<description>Quelques petites notions sur les machines virtuelles + La machine virtuelle de Mr Wirth qui permet de s'amuser un peu en pascal.

-
&lt;a href="http://www.sed-p.net/-Compilateurs-Lex-et-Yacc-.html" rel="directory"&gt;Compilateurs / Lex et Yacc&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><h3 class="spip">Une machine virtuelle, pourquoi ?</h3>
<p class="spip">Pourquoi compiler un programme pour une machine qui n'existe pas, et donc interpréter ce code sur la machine cible ?</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Parce qu'il est alors plus facile de rendre un programme portable. Il suffit d'adapter le code de l'interpréteur (la machine virtuelle) qui est généralement écrit en langage de haut niveau, et zou ! vos programmes vont également tourner sur la nouvelle cible. De plus la machine virtuelle sera facilement adaptable aux spécificités du matériel et extensible en fonction des besoins du programmeur.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Parce qu'il est plus facile de traduire ce pseudo-code en vrai langage machine que de refaire entièrement la compilation en code machine pour la machine cible. Dans le cas de la JVM, on peu réaliser un compilateur pascal pour la JVM et dans ce cas notre code sera fonctionnel sur toutes les plateformes disposant de la JVM.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Parce que l'on peut permettre d'attendre ainsi une application en incorporant une VM, sans pour autant ajouter une faille de sécurité au programme. Les scripts tournant sur la machine virtuelle ne peuvent pas faire plus de chose que ce que la machine permet. En gros si la VM ne permet pas d'ouvrir ou modifier des fichiers, le code tournant sur la VM ne pourra modifier le contenu d'un disque !</p> <h3 class="spip">Une machine à pile ?</h3>
<p class="spip"><i class="spip">Non, je ne parle pas des piles alcalines...</i></p> <p class="spip">A quoi peut donc ressembler une machine virtuelle ? voici le peu que je comprend sur le sujet :</p> <p class="spip">Pensons au niveau machine : on va parler de pile donc oublions nos multiples pointeurs AX, ECX, Y, R1, SP ... etc (enfin non, SP on le garde). La VM a pile se compose :</p> <ul class="spip"><li class="spip"> d'un espace mémoire pour le code (un gros tableau d'octets),</li><li class="spip"> d'un espace mémoire pour les données (encore un gros tableau d'octets),</li><li class="spip"> Une pile de données (*).</li></ul>
<p class="spip">(*) <i class="spip">Pour le cas de la pile, on peut utiliser directement l'espace mémoire de données ou une liste chainé. Mais la question se pose coté VM, pas pour le programme.</i></p> <p class="spip">Ceci est une vue depuis le programme qui tourne sur la VM. bien sûr il y a plus d'informations pour assurer le bon fonctionnement de tout cela (position courante dans la pile, par exemple, ou un pointeur sur la prochaine instruction de code à exécuter), mais cela n'importe pas pour les programme qui tourne dessus.</p> <p class="spip">En gros nous avons une pile et pas d'autres registres pour traiter les données. On utilise alors le sommet de la pile comme accumulateur. ex : Pour faire une addition, on empile les deux valeurs, puis l'instruction 'add' laisse le résultat sur le sommet de la pile.</p> <p class="spip">Avec le code suivant :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><br /> i := 1+2;<br />
</code></div>
<p class="spip">Notre compilateur sort alors le pseudo code suivant :</p> <div style='text-align: left;' class='spip_code' dir='ltr'><code><br /> Push 1<br /> Push 2<br /> Addi<br /> Push 1024 ; Adresse de i dans la mémoire, par exemple.<br /> Store<br />
</code></div>
<p class="spip">On retrouve donc dans i le résultat de l'addition.</p> <h3 class="spip">Le PCode</h3>
<p class="spip">Voici le code de l'interpréteur du PCode. Je ne met pas la partie compilation qui se trouve dans l'archive disponible en bas de page.
Tout ceci vient du maitre <a href="http://www.cs.inf.ethz.ch/~wirth/" class="spip_out">N. Wirth</a> dans : <i class="spip">Algorithms + Data Structures = Programs</i>.</p> <div class="coloration_code"><div class="spip_pascal cadre"><div class="pascal" style="font-family: monospace;"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">procedure</span> interpret;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">var</span> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// PC est la position de l'instruction dans le code</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">// SP est la position courante du sommet de la pile</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> pc, sp, j, k, n: <span style="color: #993333;">integer</span>; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> i: instr; <span style="color: #808080; font-style: italic;">// Instruction en cours de traitement </span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> c: <span style="color: #993333;">char</span>; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> h: <span style="color: #993333;">boolean</span>; <span style="color: #808080; font-style: italic;">// Quitter le programme</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">begin</span> </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> pc := <span style="color: #cc66cc;">0</span>; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> h := <span style="color: #000000; font-weight: bold;">false</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">repeat</span> i := code<span style="color: #66cc66;">&#91;</span>pc<span style="color: #66cc66;">&#93;</span>; pc := pc + <span style="color: #cc66cc;">1</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">case</span> i.<span style="color: #202020;">op</span> <span style="color: #b1b100;">of</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> add: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> + m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> neg: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := -m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> mul: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> * m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> divd: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">div</span> m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> remd: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">mod</span> m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> div2: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">div</span> <span style="color: #cc66cc;">2</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> rem2: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">mod</span> <span style="color: #cc66cc;">2</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> eqli: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> = m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> neqi: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> &lt;&gt; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> lssi: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> &lt; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> leqi: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> &lt;= m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> gtri: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> &gt; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> geqi: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> &gt;= m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> dupl: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> swap: <span style="color: #b1b100;">begin</span> k := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>; m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := k <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> andb: <span style="color: #b1b100;">begin</span> <span style="color: #b1b100;">if</span> m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">then</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="color: #cc66cc;">0</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> orb: <span style="color: #b1b100;">begin</span> <span style="color: #b1b100;">if</span> m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">then</span> m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> := <span style="color: #cc66cc;">1</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> load: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> stor: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> hhalt: h := <span style="color: #000000; font-weight: bold;">true</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">(* Entrée/sortie *)</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> wri: <span style="color: #b1b100;">begin</span> <span style="">write</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">2</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> wrc: <span style="color: #b1b100;">begin</span> <span style="">write</span><span style="color: #66cc66;">&#40;</span><span style="">chr</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> wrl: <span style="">writeln</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> rdi: <span style="color: #b1b100;">begin</span> <span style="">read</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#91;</span>m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> rdc: <span style="color: #b1b100;">begin</span> <span style="">read</span><span style="color: #66cc66;">&#40;</span>c<span style="color: #66cc66;">&#41;</span>; m<span style="color: #66cc66;">&#91;</span>m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span>c<span style="color: #66cc66;">&#41;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> rdl: <span style="">readln</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> eol: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := <span style="">ord</span><span style="color: #66cc66;">&#40;</span><span style="">eoln</span><span style="color: #66cc66;">&#40;</span>input<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #808080; font-style: italic;">(* Entrée/sortie *)</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> ldc: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := i.<span style="color: #202020;">a</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> ldla: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := sp + <span style="color: #cc66cc;">1</span> + i.<span style="color: #202020;">a</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> ldl: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span> + i.<span style="color: #202020;">a</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> ldg: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>i.<span style="color: #202020;">a</span><span style="color: #66cc66;">&#93;</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> stl: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>sp + i.<span style="color: #202020;">a</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> stg: <span style="color: #b1b100;">begin</span> m<span style="color: #66cc66;">&#91;</span>i.<span style="color: #202020;">a</span><span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> move: <span style="color: #b1b100;">begin</span> k := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; j := m<span style="color: #66cc66;">&#91;</span>sp + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>; sp := sp + <span style="color: #cc66cc;">2</span>; n := i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">repeat</span> n := n - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>k + n<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>j + n<span style="color: #66cc66;">&#93;</span><span style="color: #b1b100;">until</span> n = <span style="color: #cc66cc;">0</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> copy: <span style="color: #b1b100;">begin</span> j := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; n := i.<span style="color: #202020;">a</span>; sp := sp - n + <span style="color: #cc66cc;">1</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">repeat</span> n := n - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp + n<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>j + n<span style="color: #66cc66;">&#93;</span><span style="color: #b1b100;">until</span> n = <span style="color: #cc66cc;">0</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> addc: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> + i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> mulc: m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> * i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> jump: pc := i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> jumpz: <span style="color: #b1b100;">begin</span> <span style="color: #b1b100;">if</span> m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">then</span> pc := i.<span style="color: #202020;">a</span>; sp := sp + <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> call: <span style="color: #b1b100;">begin</span> sp := sp - <span style="color: #cc66cc;">1</span>; m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span> := pc; pc := i.<span style="color: #202020;">a</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> adjs: sp := sp + i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> sets: sp := i.<span style="color: #202020;">a</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> exit: <span style="color: #b1b100;">begin</span> pc := m<span style="color: #66cc66;">&#91;</span>sp<span style="color: #66cc66;">&#93;</span>; sp := sp + i.<span style="color: #202020;">a</span> <span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">end</span></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> <span style="color: #b1b100;">until</span> h</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">end</span>;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"> </div></li></ol></div></div><div class='cadre_download' style='text-align: right;'> <a href='http://www.sed-p.net/local/cache-code/b599096ed2090bc751d8b4b220889590.txt' style='font-family: verdana, arial, sans; font-weight: bold; font-style: normal;'>telecharger</a></div></div>
<p class="spip">En gros voici le code que vous devez adapter à la machine cible pour rendre votre programme portable. Bien sûr cette VM ne permet pas grand chose sur la machine hôte.</p> <p class="spip"><strong class="spip">Les entrée/Sortie sont du type stdin/stdout uniquement. Mais vous pouvez rajouter vos propres OPCodes et ainsi rendre d'autres fonctions possibles, comme c'est déjà le cas avec write/read/writeln...</strong></p> <h3 class="spip">Références</h3>
<p class="spip"><a href="http://en.wikipedia.org/wiki/P-Code_machine" class="spip_out">Description du P-Code sur Wikipedia</a>.</p> <p class="spip"><a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/Mnemonics.doc.html" class="spip_out">Les OPCodes de la JVM</a>.</p> <p class="spip"><a href="http://download.microsoft.com/download/D/C/1/DC1B219F-3B11-4A05-9DA3-2D0F98B20917/Partition%20III%20CIL.doc#_Toc100636387" class="spip_out">Les OPCodes du CIL-dotnet (format word) </a></p> <p class="spip">Vous trouverez également en pièces jointes de cet article deux fichiers Zip contenant Pascal-S et PCode. Ce sont deux exemples de compilateur et interpréteur Pascal.</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/XwWUiCxJdIOxAveQkF3muf15898/0/da"><img src="http://feedads.g.doubleclick.net/~a/XwWUiCxJdIOxAveQkF3muf15898/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/XwWUiCxJdIOxAveQkF3muf15898/1/da"><img src="http://feedads.g.doubleclick.net/~a/XwWUiCxJdIOxAveQkF3muf15898/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/-15gTJ0eoYE" height="1" width="1"/>]]></content:encoded>


		
		<enclosure url="http://www.sed-p.net/IMG/zip/pascal-s.zip" length="50593" type="application/zip" />
		
		<enclosure url="http://www.sed-p.net/IMG/zip/test-pcode.zip" length="8621" type="application/zip" />
		

	<feedburner:origLink>http://www.sed-p.net/Pascal-S-et-P-Code.html</feedburner:origLink></item>



	<item>
		<title>POPtm - Documentation et FAQ</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/dSdag-ommzs/POPtm-Documentation-et-FAQ.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/POPtm-Documentation-et-FAQ.html</guid>
		<dc:date>2007-01-31T07:30:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html">POPtm (transfert POP vers SMTP)</category>


		<description>Documentation et FAQ sur POPtm, un connecteur POP pour serveur de messagerie

-
&lt;a href="http://www.sed-p.net/-POPtm-transfert-POP-vers-SMTP-.html" rel="directory"&gt;POPtm (transfert POP vers SMTP)&lt;/a&gt;


		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><center> <script type="text/javascript"><!-- google_ad_client = "pub-8519611063689414"; /* 468x60, créé le 16/02/08 */ google_ad_slot = "7096481370"; google_ad_width = 468; google_ad_height = 60; google_cpa_choice = ""; // on file //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </center>
<center>
<h3 class="spip">POPtm se trouve sur Sourceforge !</h3>
<p class="spip">Pour les dernières versions rendez-vous sur <a href="http://sourceforge.net/projects/poptm/" class="spip_out">POPtm / Sourceforge</a>.</p> <p class="spip"><a href="http://sourceforge.net/project/showfiles.php?group_id=194519" class="spip_out">Télécharger POPtm</a></p> </center>
<hr class="spip" />
<h3 class="spip">Conseil sur l'installation</h3>
<p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Pour passer en SSL pour l'administration, vous devez activer l'option puis redémarrer le service. Utiliser ensuite "https" à la place de "http" pour vous connecter sur POPtm.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Vous pouvez vérifier vos POP toutes les 2 minutes, mais il est possible que le serveur de votre prestataire soit configurer pour refuser les connexions à moins de 5 minutes d'interval.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> je vous conseil de laisser votre <a href="http://fr.wikipedia.org/wiki/antivirus" class="spip_glossaire">antivirus</a> parcourir les dossiers de POPtm, on ne sait jamais, par contre indiquez lui de supprimer les fichiers ou de les mettre en quarantaine directement.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Indiquez une sauvegarde des mails pendant 4 ou 7 jours, au cas ou, pour bien voir les emails passer de temp vers old et pouvoir retrouver un email perdu.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Il est préférable d'utiliser <strong class="spip">un compte POP par utilisateur</strong> plutôt que des comptes collecteurs. En effet si un message est transmis avec un destinataire en CCI, ce destinataire n'est pas indiqué dans le mail (dans l'entête) et dans ce cas POPtm ne sait pas à qui le transmettre.</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Indiquez bien les domaines de votre serveur de messagerie et transférez les mails uniquement aux utilisateurs de vos domaines. Si votre serveur SMTP sert également de relais, il pourrait renvoyer les mails aux autres destinataires si vous ne configurez pas les domaines !</p> <p class="spip"><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> Quand la configuration est ok, cliquez sur "<strong class="spip">Démarrer POPtm</strong>" pour que le téléchargement des mails soit fait. Le téléchargement suivra alors le planning prévu. Pour modifier la configuration, cliquez sur "<strong class="spip">Arreter POPtm</strong>".</p> <h3 class="spip">Cheminement des messages</h3>
<p class="spip">1. POPtm télécharge les mails depuis tout les comptes POP et les enregistre au format texte dans son dossier "temp" (un sous dossier du répertoire dans lequel se trouve POPtm), tout en indiquant dans le log le compte pop d'origine et le nombre de mails téléchargés depuis ce compte.</p> <p class="spip">2. Ensuite, il va lire un par un les fichiers dans le dossier temp pour les transmettre au serveur SMTP. à chaque transfert, ce fichier est copier dans le dossier "old" en cas de réussite ou "error" en cas de problème de transfert avec le serveur SMTP. Dans le cas d'une erreur il est transmis en pièce jointe au postmaster.</p> <p class="spip">le but est de vider le dossier "temp" pour ne pas relancer de transfert.</p> <p class="spip">3. une fois le transfert terminée, une ligne est rajoutée dans le log et indique le nombre de mail transmis (qui doit donc correspondre au nombre de mail reçu).</p> <h3 class="spip">FAQ</h3>
<p class="spip"><i class="spip">Si vous rencontrez d'autre cas merci de me tenir informé pour que je corrige le problème. J'utilise POPtm avec 10 comptes POP mais très peu de trafic, avec 2 threads par serveur POP et 4 pour le SMTP.</i></p> <p class="spip"><strong class="spip">POPtm bloque sur mon SMTP / serveur POP et rien ne se passe</strong></p> <p class="spip">Oui, si le modèle de thread que vous utilisé est trop agressif, c'est un risque. Essayez avec 2 voir 1 thread SMTP et 2 au total pour les POPs.</p> <p class="spip"><strong class="spip">POPtm transmet plusieurs fois les mails :</strong></p> <p class="spip">1 - Vous devez demander la suppression des emails sur le serveur POP. Il est possible de ne pas les supprimer mais dans ce cas votre serveur doit pouvoir fournir des ID unique des emails sinon POPtm téléchargera toujours les mêmes messages !!! Pensez dans ce cas à vider votre boite email...</p> <p class="spip">2 - Un mail peut être transmis de nouveau lorsque qu'il ne peut être supprimé du dossier temp. Généralement parce qu'il est bloqué au niveau fichier (par un <a href="http://fr.wikipedia.org/wiki/antivirus" class="spip_glossaire">antivirus</a> par exemple).</p> <p class="spip">3 - Il se peut également que les fichiers ne soit pas copiés d'un dossier à l'autre, simplement parce que ces dossiers n'existent pas. Dans ce cas vérifiez l'existence des dossier "Temp", "Error" et "Old" ainsi que le fichier de configuration qui doit contenir ces chemins.</p> <p class="spip"><strong class="spip">J'ai des messages d'erreurs dans les logs ... c'est quoi ?</strong></p> <p class="spip">1 - POPtm vous tiens informé si il n'arrive pas à se connecter aux serveurs POP. Il arrive donc parfois qu'un message du type "<strong class="spip">Connection closed gracefully</strong>" ou "<strong class="spip">Read time out</strong>" s'affiche dans les logs. Si ils ne sont pas trop fréquent, voir continu, vous pouvez ignorer ces messages. Si ces messages sont en continu sur tout les compte POP, vérifier la connexion internet du poste ou se trouve POPtm ! Il arrive aussi que les serveurs d'un FAI soit indisponible quelque temps ...</p> <p class="spip">2 - Lors de la lecture d'un message, celui-ci peut être dans un format incorrect : ligne trop longue, pas d'adresse d'expéditeur... POPtm va par la suite le transmettre au postmaster en pièce jointe. Ce sont les messages que l'on retrouve dans le dossier "Error".</p> <p class="spip">3 - Si votre serveur refuse le mail (par exemple vous avez un antispam installé sur celui-ci) il se peut que la connection SMTP soit coupé en cours de transmission. ces erreurs sont facile à identifier, elle sont du type IdSMTPReplyError. Bref, n'en tenez pas compte si vous avez des outils de traitement des emails installés.</p> <p class="spip"><strong class="spip">ClamAV : Erreur d'initialisation de la base de données</strong></p> <p class="spip">Cette erreur indique que la dernière mise à jour des bases pour ClamAV s'est surement mal passé. Dans ce cas stoppez POPtm et faite une mise à jour a partir de la page de configuration de ClamAV.</p></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/VFLeL8tE9oy4ZtFam6ctc6GIlVI/0/da"><img src="http://feedads.g.doubleclick.net/~a/VFLeL8tE9oy4ZtFam6ctc6GIlVI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VFLeL8tE9oy4ZtFam6ctc6GIlVI/1/da"><img src="http://feedads.g.doubleclick.net/~a/VFLeL8tE9oy4ZtFam6ctc6GIlVI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/dSdag-ommzs" height="1" width="1"/>]]></content:encoded>


		

	<feedburner:origLink>http://www.sed-p.net/POPtm-Documentation-et-FAQ.html</feedburner:origLink></item>



	<item>
		<title>Firebird Profile Provider</title>
		<link>http://feedproxy.google.com/~r/Sed-pnet/~3/l24GfUGM_OA/Firebird-Profile-Provider.html</link>
		<guid isPermaLink="false">http://www.sed-p.net/Firebird-Profile-Provider.html</guid>
		<dc:date>2006-03-17T17:46:42Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Bech</dc:creator>

<category domain="http://www.sed-p.net/-Interbase-Firebird-.html">Interbase / Firebird</category>

		<dc:subject>Linux</dc:subject>

		<description>Comme je n'en trouvait pas, j'ai fini par faire mon propre fournisseur de profil sous firebird

-
&lt;a href="http://www.sed-p.net/-Interbase-Firebird-.html" rel="directory"&gt;Interbase / Firebird&lt;/a&gt;

/ 
&lt;a href="http://www.sed-p.net/+-Linux-+.html" rel="tag"&gt;Linux&lt;/a&gt;

		</description>


 <content:encoded><![CDATA[<div class='rss_texte'><p class="spip">Voila un bon exemple pour utiliser firebird sous .net !</p> <p class="spip">Il s'agit d'un fournisseur de profil utilisant Firbird pour le stockage. Vous allez enfin pouvoir vous passer de SQLServer ! (enfin, je pense...)</p> <p class="spip">Ce code écrit en VB.NET est donc un héritage de la class <strong class="spip">ProfileProvider</strong>. Vous devez modifier votre fichier <strong class="spip">web.config</strong> pour indiquer l'utilisation de ce provider ainsi que la chaine de connection pour la base Firebird.</p> <p class="spip">Pour info :
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> J'utilise le client firebird pour dotnet 1.1 car la version pour dotnet 2 est encore une beta,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> vous pouvez vous-même créer la base à l'aide du fichier <strong class="spip">schema.sql</strong>, sinon le provider s'en charge,
<br /><img src="http://www.sed-p.net/local/cache-vignettes/L9xH12/puce-c9f2c.gif" width='9' height='12' alt="-" style='height:12px;width:9px;' class='' /> je n'ai pas encore fait les fonctions donnant la liste des profils inactifs, etc...</p> <p class="spip">En attendant vous trouverez dans le fichier le code en VB ainsi qu'une page aspx de test, accompagné de la DLL pour le client firebird sous dotnet.</p> <h3 class="spip">Base de données</h3>
<p class="spip">En utilisant le fichier web.config (voir plus bas), vous pouvez indiquer la chaine de connection pour votre base. Si vous ne donnez pas cette information, le provider en utilisera une par défaut :
<strong class="spip">Server=localhost ; Database=ASPNET_PROFILE.FDB ; User=SYSDBA ; Password=masterkey ; Pooling=true ; MinPoolSize=0 ; ConnectionLifetime=180 ;</strong>. Vous risquez donc de retrouver votre base dans le dossier System32 si vous ne changez pas le dossier des bases dans la config de firebird...</p> <p class="spip"><strong class="spip">Si la base de données n'existe pas, elle le sera par le provider</strong> : Le fichier schema.txt qui contient le code SQL se trouve également dans la DLL en tant que ressource.</p> <h3 class="spip">Modification du web.config</h3>
<p class="spip">Deux modifications à faire sur ce fichier :</p> <p class="spip"><strong class="spip">Ajouter une "connectionString" pour la base firebird, en la personnalisant bien sûr</strong> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><br /> &lt;connectionStrings&gt;<br /> &lt;add name="ProfileDBProvider" connectionString="Server=localhost;Database=PROFILE.FDB; User=SYSDBA; Password=masterkey; Pooling=true; MinPoolSize=0; ConnectionLifetime=180;"/&gt;<br /> &lt;/connectionStrings&gt;<br />
</code></div>
<hr class="spip" />
<p class="spip"><strong class="spip">Indiquer l'utilisation du provider</strong> :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code><br /> &lt;profile enabled="true" defaultProvider="fbProfileProvider"&gt;<br /> &lt;providers&gt; <br /> &lt;add name="fbProfileProvider" <br /> type="sedp.fbProfile.fbProfileProvider" <br /> connectionStringName="ProfileDBProvider"/&gt; <br /> &lt;/providers&gt;<br /> &lt;/profile&gt;<br />
</code></div></div>
		
		
<p><a href="http://feedads.g.doubleclick.net/~a/c8C6oh8Nxdao4VfC8WqsD3Iwwzs/0/da"><img src="http://feedads.g.doubleclick.net/~a/c8C6oh8Nxdao4VfC8WqsD3Iwwzs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/c8C6oh8Nxdao4VfC8WqsD3Iwwzs/1/da"><img src="http://feedads.g.doubleclick.net/~a/c8C6oh8Nxdao4VfC8WqsD3Iwwzs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Sed-pnet/~4/l24GfUGM_OA" height="1" width="1"/>]]></content:encoded>


		
		<enclosure url="http://www.sed-p.net/IMG/zip/fbProfileProvider.zip" length="248253" type="application/zip" />
		

	<feedburner:origLink>http://www.sed-p.net/Firebird-Profile-Provider.html</feedburner:origLink></item>





</channel>

</rss>

