<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Delphi Blog</title>
	<atom:link href="http://www.delphi-blog.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.delphi-blog.it</link>
	<description>appunti di programmazione</description>
	<lastBuildDate>Tue, 25 Oct 2011 12:28:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Attivare il Sensore di Prossimità con Firemonkey per IOS (sensor proximity)</title>
		<link>http://www.delphi-blog.it/2011/10/attivare-il-sensore-di-prossimita-con-firemonkey-per-ios-sensor-proximity/</link>
		<comments>http://www.delphi-blog.it/2011/10/attivare-il-sensore-di-prossimita-con-firemonkey-per-ios-sensor-proximity/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 12:28:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firemonkey]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[fpc]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[Proximity Sensor]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=184</guid>
		<description><![CDATA[Il sensore di prossimità è posizionato nella parte superiore del monitor, la sua funzione è rilevare una vicinanza, ad esempio quella della faccia durante una chiamata, e disattivare il monitor per evitare di premere erroneamente dei tasti. Attivare il sensore di prossimità (Sensor Proximity) è molto semplice, basta inserire questa riga di codice:
 {$IFDEF FPC}
UIDevice.CurrentDevice.setProximityMonitoringEnabled(true);
{$ENDIF}
ricordatevi [...]]]></description>
			<content:encoded><![CDATA[<p>Il sensore di prossimità è posizionato nella parte superiore del monitor, la sua funzione è rilevare una vicinanza, ad esempio quella della faccia durante una chiamata, e disattivare il monitor per evitare di premere erroneamente dei tasti. Attivare il sensore di prossimità (Sensor Proximity) è molto semplice, basta inserire questa riga di codice:</p>
<p><code> {$IFDEF FPC}<br />
UIDevice.CurrentDevice.setProximityMonitoringEnabled(true);<br />
{$ENDIF}</code></p>
<p>ricordatevi ovviamente di inserire &#8220;iphoneall&#8221; nella Uses&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/10/attivare-il-sensore-di-prossimita-con-firemonkey-per-ios-sensor-proximity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sqlite su IOS tramite Delphi XE2 e Firemonkey</title>
		<link>http://www.delphi-blog.it/2011/09/sqlite-su-ios-tramite-delphi-xe2-e-firemonkey/</link>
		<comments>http://www.delphi-blog.it/2011/09/sqlite-su-ios-tramite-delphi-xe2-e-firemonkey/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 10:29:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firemonkey]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[IOS]]></category>
		<category><![CDATA[Ipad]]></category>
		<category><![CDATA[Iphone]]></category>
		<category><![CDATA[Sqlite]]></category>
		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=176</guid>
		<description><![CDATA[Questo week-end ho scaricato dal sito della Embarcadero il nuovo Rad Studio XE2 in versione di prova. Devo ammettere che ci sono molte novità interessanti e tra queste l&#8217;introduzione di Firemonkey e quindi la possibilità di creare con il nostro Delphi applicazioni per Mac OSX e IOS. A parte testare gli esempi inclusi, la prima [...]]]></description>
			<content:encoded><![CDATA[<p>Questo week-end ho scaricato dal sito della Embarcadero il nuovo Rad Studio XE2 in versione di prova. Devo ammettere che ci sono molte novità interessanti e tra queste l&#8217;introduzione di Firemonkey e quindi la possibilità di creare con il nostro Delphi applicazioni per Mac OSX e IOS. A parte testare gli esempi inclusi, la prima cosa che ho fatto è provare la connessione ad un database locale, condizione minima e necessaria per sviluppare una qualsiasi app che non sia una calcolatrice. Il risultato è stato alquanto deludente, i componenti e le classi dei db non funzionano su IOS. Questo pone una grossa limitazione, così ho provato a creare una piccola app di test e a modificare il codice da XCode (che in questo caso utilizza FPC) e da lì sono riuscito a connettermi ad un database di SQLite.  <em>uses</em></p>
<p style="padding-left: 30px; "><em>&#8230; SQLite3db,SQLite;</em></p>
<p><em>&#8230;.</em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>function TBBSqlite.GetTable(sql:string): TBBTable;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>var</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1: TBBTable;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>i1,i2:integer;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$IFDEF MSWINDOWS}</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>sltb: TSQLIteTable;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$ELSE}</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>QryResult,RecResult  : Classes.TStringList;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$ENDIF }</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$IFDEF MSWINDOWS}</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>sltb := fdb.GetTable(sql);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>try</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>if not (sltb.EOF)then</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1:=TBBtable.Create(sltb.RowCount,sltb.ColCount)</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>else</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1:=TBBtable.Create(0,0);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>for i1:=0 to sltb.RowCount-1 do</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>for i2:=0 to sltb.ColCount-1 do</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1.setvalue(i1,i2,sltb.Fields[i2]);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>sltb.Next;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>finally</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>Result:=table1;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$ELSE}</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>QryResult := Classes.TStringList.Create;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>RecResult := Classes.TStringList.Create;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>RecResult.Delimiter := &#8216;,&#8217;;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>RecResult.QuoteChar := &#8216;&#8221;&#8216;;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>RecResult.StrictDelimiter := True;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>if fdb.Query(sql,QryResult) then</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>for i1 := 0 to QryResult.Count-1 do</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>RecResult.DelimitedText:=QryResult[i1];</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>if i1=0 then</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1:=TBBTable.Create(QryResult.Count,RecResult.Count);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>for i2 := 0 to RecResult.Count-1 do</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>table1.setvalue(i1,i2,RecResult[i2]);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>Result:=table1;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>{$ENDIF }</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<p><em>var</em></p>
<p style="padding-left: 30px; "><em>QryResult,RecResult  : Classes.TStringList;</em></p>
<p style="padding-left: 30px; "><em>fdb:TSQLiteDatabase;</em></p>
<p><em>begin</em></p>
<p style="padding-left: 30px; "><em>QryResult := Classes.TStringList.Create</em></p>
<p style="padding-left: 30px; "><em>fdb:=TSQLite.Create(Filename);</em></p>
<p style="padding-left: 30px;"><em> if fdb.Query(sql,QryResult) then</em></p>
<p style="padding-left: 30px;"><em> begin</em></p>
<p style="padding-left: 60px;"><em>for i1 := 0 to QryResult.Count-1 do</em></p>
<p style="padding-left: 60px;"><em>begin</em></p>
<p style="padding-left: 60px;"><em> &#8230;.</em></p>
<p style="padding-left: 60px;"><em> end;</em></p>
<p style="padding-left: 30px;"><em>end;</em></p>
<p><em>end;</em> <em><span id="more-176"></span></em> La programmazione diventa però così molto scomoda in quanto in questa modalità da delphi potrei programmare solo l&#8217;interfaccia grafica e poco di più, tanto vale lavorare direttamente da XCODE.</p>
<p>Ho così scaricato da internet una <a href="http://www.itwriting.com/blog/?page_id=659" target="_blank">classe</a> contenente funzioni di base per l&#8217;utilizzo di SQLite sotto windows. A questo punto mi sono trovato con delle funzioni e metodi per quando compilo con XCODE e altri per quando compilo sotto windows. Ho quindi creato una mia classe contenente delle Compiler Directive che seleziona funzioni/metodi a seconda dell&#8217;ambiente.</p>
<p><em>uses</em></p>
<p style="padding-left: 30px;"><em>&#8230;</em></p>
<p style="padding-left: 30px;"><em> </em><em>{$IFDEF MSWINDOWS}</em></p>
<p style="padding-left: 30px;"><em> </em><em>SQLiteTable3</em></p>
<p style="padding-left: 30px;"><em> </em><em>{$ELSE}</em></p>
<p style="padding-left: 30px;"><em> </em><em>SQLite3db,SQLite</em></p>
<p style="padding-left: 30px;"><em></em><em>{$ENDIF }</em></p>
<p style="padding-left: 30px;"><em></em><em>;</em></p>
<p><em>&#8230;</em></p>
<p style="font-style: italic;">constructor TBBSqlite.Create(Filename : String);</p>
<p style="font-style: italic;">begin</p>
<p style="font-style: italic;">{$IFDEF MSWINDOWS}</p>
<p style="font-style: italic;">fdb:=TSQLiteDatabase.Create(Filename);</p>
<p style="font-style: italic;">{$ELSE}</p>
<p style="font-style: italic;">fdb:=TSQLite.Create(Filename);</p>
<p style="font-style: italic;">{$ENDIF }</p>
<p style="font-style: italic;">end;</p>
<p>Il risultato che ottengo è poter programmare direttamente su Delphi senza dover preoccuparmi di inserire ogni qualvolta codice da XCode.</p>
<p>Scarica l&#8217;esempio da qui: <a href="http://www.delphi-blog.it/wp-content/uploads/2011/09/Sqlite.zip">Sqlite Delphi Xe2 IOS Sample</a></p>
<p><a href="http://www.delphi-blog.it/wp-content/uploads/2011/09/iphone.jpg"><img class="alignnone size-full wp-image-175" title="iphone delphi xe2 firemonkey" src="http://www.delphi-blog.it/wp-content/uploads/2011/09/iphone.jpg" alt="iphone delphi xe2 firemonkey" width="380" height="730" /></a><a href="http://www.delphi-blog.it/wp-content/uploads/2011/09/windows.jpg"><img class="alignnone size-full wp-image-174" title="windows delphi xe2 firemonkey" src="http://www.delphi-blog.it/wp-content/uploads/2011/09/windows.jpg" alt="windows delphi xe2 firemonkey" width="358" height="541" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/09/sqlite-su-ios-tramite-delphi-xe2-e-firemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrieve the default language of the system</title>
		<link>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system-2/</link>
		<comments>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system-2/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 14:04:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Senza categoria @en]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[GetSystemDefaultLangID]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=166</guid>
		<description><![CDATA[This feature allows you to retrieve the default language set on the system, consists of two functions: GetSystemDefaultLangID that returns the binary Language identifier in Microsoft Word format (eg 1040 for Italy) and function VerLanguageName that retrieves the description of the language associated with the binary Microsoft language identifier.
function recupera_lingua: string;
var
lingua: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID,lingua, [...]]]></description>
			<content:encoded><![CDATA[<p><span title="Fai clic per visualizzare le traduzioni alternative">This</span> <span title="Fai clic per visualizzare le traduzioni alternative">feature</span> <span title="Fai clic per visualizzare le traduzioni alternative">allows you</span> <span title="Fai clic per visualizzare le traduzioni alternative">to</span> <span title="Fai clic per visualizzare le traduzioni alternative">retrieve</span> <span title="Fai clic per visualizzare le traduzioni alternative">the</span> <span title="Fai clic per visualizzare le traduzioni alternative">default language</span> <span title="Fai clic per visualizzare le traduzioni alternative">set on</span> <span title="Fai clic per visualizzare le traduzioni alternative">the system</span><span title="Fai clic per visualizzare le traduzioni alternative">, </span><span title="Fai clic per visualizzare le traduzioni alternative">consists of</span> <span title="Fai clic per visualizzare le traduzioni alternative">two</span> <span title="Fai clic per visualizzare le traduzioni alternative">functions</span><span title="Fai clic per visualizzare le traduzioni alternative">:</span> <span title="Fai clic per visualizzare le traduzioni alternative">GetSystemDefaultLangID</span> <span title="Fai clic per visualizzare le traduzioni alternative">that returns</span> <span title="Fai clic per visualizzare le traduzioni alternative">the</span> <span title="Fai clic per visualizzare le traduzioni alternative">binary </span><span title="Fai clic per visualizzare le traduzioni alternative">Language</span> <span title="Fai clic per visualizzare le traduzioni alternative">identifier</span> <span title="Fai clic per visualizzare le traduzioni alternative">in</span> <span title="Fai clic per visualizzare le traduzioni alternative">Microsoft</span> <span title="Fai clic per visualizzare le traduzioni alternative">Word format</span> <span title="Fai clic per visualizzare le traduzioni alternative">(</span><span title="Fai clic per visualizzare le traduzioni alternative">eg</span> <span title="Fai clic per visualizzare le traduzioni alternative">1040</span> <span title="Fai clic per visualizzare le traduzioni alternative">for</span> <span title="Fai clic per visualizzare le traduzioni alternative">Italy</span><span title="Fai clic per visualizzare le traduzioni alternative">)</span> <span title="Fai clic per visualizzare le traduzioni alternative">and</span> <span title="Fai clic per visualizzare le traduzioni alternative">function </span><span title="Fai clic per visualizzare le traduzioni alternative">VerLanguageName</span> <span title="Fai clic per visualizzare le traduzioni alternative">that</span> <span title="Fai clic per visualizzare le traduzioni alternative">retrieves</span> <span title="Fai clic per visualizzare le traduzioni alternative">the description</span> <span title="Fai clic per visualizzare le traduzioni alternative">of the</span> <span title="Fai clic per visualizzare le traduzioni alternative">language associated with the </span><span title="Fai clic per visualizzare le traduzioni alternative">binary </span><span title="Fai clic per visualizzare le traduzioni alternative">Microsoft</span> <span title="Fai clic per visualizzare le traduzioni alternative">language</span> <span title="Fai clic per visualizzare le traduzioni alternative">identifier</span><span title="Fai clic per visualizzare le traduzioni alternative">.</span></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>function recupera_lingua: string;</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>var</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>lingua: array [0..50] of char;<br style="padding: 0px; margin: 0px;" /></em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>begin<br style="padding: 0px; margin: 0px;" /></em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>VerLanguageName(GetSystemDefaultLangID,lingua, 50);</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>Result := StrPas(Lang_array);</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>end;</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong><span title="Fai clic per visualizzare le traduzioni alternative">Compatible</span> <span title="Fai clic per visualizzare le traduzioni alternative">with</span>:</strong></p>
<ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 1px; list-style-type: none; list-style-position: initial; list-style-image: initial; overflow-x: hidden; overflow-y: hidden; height: 75px; margin: 0px;">
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows XP: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows VISTA: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows 7: TO VERIFY</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrieve the default language of the system</title>
		<link>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system/</link>
		<comments>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 14:01:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Senza categoria @en]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[GetSystemDefaultLangID]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=163</guid>
		<description><![CDATA[This feature allows you to retrieve the default language set on the system, consists of two functions: GetSystemDefaultLangID that returns the binary Language identifier in Microsoft Word format (eg 1040 for Italy) and function VerLanguageName that retrieves the description of the language associated with the binary Microsoft language identifier.
function recupera_lingua: string;
var
lingua: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID,lingua, [...]]]></description>
			<content:encoded><![CDATA[<p><span title="Fai clic per visualizzare le traduzioni alternative">This</span> <span title="Fai clic per visualizzare le traduzioni alternative">feature</span> <span title="Fai clic per visualizzare le traduzioni alternative">allows you</span> <span title="Fai clic per visualizzare le traduzioni alternative">to</span> <span title="Fai clic per visualizzare le traduzioni alternative">retrieve</span> <span title="Fai clic per visualizzare le traduzioni alternative">the</span> <span title="Fai clic per visualizzare le traduzioni alternative">default language</span> <span title="Fai clic per visualizzare le traduzioni alternative">set on</span> <span title="Fai clic per visualizzare le traduzioni alternative">the system</span><span title="Fai clic per visualizzare le traduzioni alternative">, </span><span title="Fai clic per visualizzare le traduzioni alternative">consists of</span> <span title="Fai clic per visualizzare le traduzioni alternative">two</span> <span title="Fai clic per visualizzare le traduzioni alternative">functions</span><span title="Fai clic per visualizzare le traduzioni alternative">:</span> <span title="Fai clic per visualizzare le traduzioni alternative">GetSystemDefaultLangID</span> <span title="Fai clic per visualizzare le traduzioni alternative">that returns</span> <span title="Fai clic per visualizzare le traduzioni alternative">the</span> <span title="Fai clic per visualizzare le traduzioni alternative">binary </span><span title="Fai clic per visualizzare le traduzioni alternative">Language</span> <span title="Fai clic per visualizzare le traduzioni alternative">identifier</span> <span title="Fai clic per visualizzare le traduzioni alternative">in</span> <span title="Fai clic per visualizzare le traduzioni alternative">Microsoft</span> <span title="Fai clic per visualizzare le traduzioni alternative">Word format</span> <span title="Fai clic per visualizzare le traduzioni alternative">(</span><span title="Fai clic per visualizzare le traduzioni alternative">eg</span> <span title="Fai clic per visualizzare le traduzioni alternative">1040</span> <span title="Fai clic per visualizzare le traduzioni alternative">for</span> <span title="Fai clic per visualizzare le traduzioni alternative">Italy</span><span title="Fai clic per visualizzare le traduzioni alternative">)</span> <span title="Fai clic per visualizzare le traduzioni alternative">and</span> <span title="Fai clic per visualizzare le traduzioni alternative">function </span><span title="Fai clic per visualizzare le traduzioni alternative">VerLanguageName</span> <span title="Fai clic per visualizzare le traduzioni alternative">that</span> <span title="Fai clic per visualizzare le traduzioni alternative">retrieves</span> <span title="Fai clic per visualizzare le traduzioni alternative">the description</span> <span title="Fai clic per visualizzare le traduzioni alternative">of the</span> <span title="Fai clic per visualizzare le traduzioni alternative">language associated with the </span><span title="Fai clic per visualizzare le traduzioni alternative">binary </span><span title="Fai clic per visualizzare le traduzioni alternative">Microsoft</span> <span title="Fai clic per visualizzare le traduzioni alternative">language</span> <span title="Fai clic per visualizzare le traduzioni alternative">identifier</span><span title="Fai clic per visualizzare le traduzioni alternative">.</span></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>function recupera_lingua: string;</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>var</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>lingua: array [0..50] of char;<br style="padding: 0px; margin: 0px;" /></em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>begin<br style="padding: 0px; margin: 0px;" /></em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>VerLanguageName(GetSystemDefaultLangID,lingua, 50);</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 30px; margin: 0px;"><em>Result := StrPas(Lang_array);</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><em>end;</em></p>
<p style="padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong><span title="Fai clic per visualizzare le traduzioni alternative">Compatible</span> <span title="Fai clic per visualizzare le traduzioni alternative">with</span>:</strong></p>
<ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 1px; list-style-type: none; list-style-position: initial; list-style-image: initial; overflow-x: hidden; overflow-y: hidden; height: 75px; margin: 0px;">
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows XP: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows VISTA: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows 7: TO VERIFY</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/02/retrieve-the-default-language-of-the-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizzare ShellExecute</title>
		<link>http://www.delphi-blog.it/2011/02/utilizzare-shellexecute/</link>
		<comments>http://www.delphi-blog.it/2011/02/utilizzare-shellexecute/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 13:34:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[shellexecute]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=154</guid>
		<description><![CDATA[La funzione API ShellExecute può lanciare un&#8217;applicazione o aprire un file in ambiente WIN32. E&#8217; utile in molte situazioni in quanto evita di scrivere molte righe di codice per raggiungere lo stesso scopo come ad esempio inviare una e-mail (es. Inviare E-Mail con ShellExecute).
HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, nShowCmd);
Parametri:

hwnd: handle della finistra, questo valore [...]]]></description>
			<content:encoded><![CDATA[<p>La funzione API <strong>ShellExecute</strong> può lanciare un&#8217;applicazione o aprire un file in ambiente WIN32. E&#8217; utile in molte situazioni in quanto evita di scrivere molte righe di codice per raggiungere lo stesso scopo come ad esempio inviare una e-mail (es. <a href="http://www.delphi-blog.it/2011/02/inviare-e-mail-con-shellexecute/">Inviare E-Mail con ShellExecute</a>).</p>
<p><em>HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, nShowCmd);</em></p>
<p><strong>Parametri:</strong></p>
<ul>
<li><em>hwnd: </em>handle della finistra, questo valore può essere NULL se la chiamata non è associata a nessuna finestra</li>
<li><em>lpOperation: </em>è una Pchar che contiene l&#8217;azione da eseguire, le azioni più comuni sono
<ul>
<li><em>edit</em>: lancia l&#8217;editor e apre il relativo documento settato in lpFile all&#8217;interno dell&#8217;editor</li>
<li><em>explore</em>: esplora una cartella specificata in lpFile</li>
<li><em>find</em>: cerca nella directory specificata in lpDirectory</li>
<li><em>open</em>: apre la voce specificata in lpFile</li>
<li><em>print</em>: stampa un file specificato in lpFile, se quest&#8217;ultimo non è un file la funzione dà errore</li>
</ul>
</li>
<li><em>lpFile</em>: Pchar contenente il nome del file o dell&#8217;oggetto che deve essere eseguito a seconda di lpOperation</li>
<li><em>lpParameters</em>: Pchar contenente i parametri che devono essere passati all&#8217;applicazione. Se lpFile è un documento deve essere impostata a NULL</li>
<li><em>lpDirectory</em>: Pchar che deve contenere la directory di lavoro, se è NULL prende il valore dell&#8217;attuale directory di lavoro</li>
<li><em>nShowCmd</em>: flag che specifica come deve essere visualizzata l&#8217;applicazione quando si apre, può assumere i seguenti valori: SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,SW_RESTORE, SW_SHOW, SW_SHOWDEFAULT, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, SW_SHOWNA, SW_SHOWNOACTIVATE, SW_SHOWNORMAL</li>
</ul>
<p><strong>Valore restituito (intero):</strong></p>
<ul>
<li>0 (zero):  errore di memora o di risorsa del S.O.</li>
<li>ERROR_FILE_NOT_FOUND: il file specificato non esite</li>
<li>ERROR_PATH_NOT_FOUND: il percorso specificato non esiste</li>
<li>ERROR_BAD_FORMAT: il file eseguibile non è valido</li>
<li>SE_ERR_ACCESSDENIED: il sistema operativo nega l&#8217;accesso al file</li>
<li>SE_ERR_ASSOCINCOMPLETE: il file associato è incompleto o non è valido</li>
<li>SE_ERR_DDEBUSY: la transazione DDE non può essere completata perché altre transazioni DDE sono in fase di elaborazione</li>
<li>SE_ERR_DDEFAIL: transazione DDE fallita</li>
<li>SE_ERR_DDETIMEOUT: transazione DDE non completata perchè la richiesta è andata fuori tempo limite</li>
<li>SE_ERR_DLLNOTFOUND: la DLL specificata non è stata trovata</li>
<li>SE_ERR_FNF: il file specificato non è stato trovato</li>
<li>SE_ERR_NOASSOC: nessuna applicazione è associata al file specificato</li>
<li>SE_ERR_OOM: memoria insufficiente per completare l&#8217;operazione</li>
<li>SE_ERR_PNF: la directory specificata non è stata trovata</li>
<li>SE_ERR_SHARE: violazione della condivisione</li>
</ul>
<p>Ora vediamo alcuni esempi pratici dell&#8217;utilizzo della funzione <span style="text-decoration: underline;">ShellExecute</span></p>
<p>Lanciare un&#8217;applicazione</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;open&#8217;, PChar(&#8217;c:\delphi\delphi.exe&#8217;), nil, nil, SW_SHOW);</em></p>
<p>Aprire un file nel Blocco note</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;open&#8217;, PChar(&#8217;notepad&#8217;), PChar(&#8217;c:\test\readme.txt&#8217;), nil, SW_SHOW);</em></p>
<p>Stampare un documento</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;print&#8217;, PChar(&#8217;c:\test\test.doc&#8217;), nil, nil, SW_SHOW);</em></p>
<p>Aprire una pagina web</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;open&#8217;, PChar(&#8217;http://www.delphi-blog.it/&#8217;), nil, nil, SW_SHOW);</em></p>
<p>Esplorare una directory</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;explore&#8217;, PChar(&#8217;c:\windows)&#8217;, nil, nil, SW_SHOW);</em></p>
<p>Avviare un comando dal prompt di DOS:</p>
<p style="padding-left: 30px; "><em>ShellExecute(Handle, &#8216;open&#8217;, PChar(&#8217;command.com&#8217;), PChar(&#8217;</em><strong><em>/c</em></strong><em> copy file1 file2&#8242;), nil, SW_SHOW);</em></p>
<p>Aprire il client di posta predefinito per inviare una mail</p>
<p style="padding-left: 30px; "><em>ShellExecute(0, ‘open’,&#8217;mailto:info@delphi-blog.it&#8217;, nil, nil, SW_SHOWNORMAL);</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/02/utilizzare-shellexecute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inviare E-Mail con ShellExecute</title>
		<link>http://www.delphi-blog.it/2011/02/inviare-e-mail-con-shellexecute/</link>
		<comments>http://www.delphi-blog.it/2011/02/inviare-e-mail-con-shellexecute/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 09:43:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mailto]]></category>
		<category><![CDATA[shellapi]]></category>
		<category><![CDATA[shellexecute]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=144</guid>
		<description><![CDATA[Creare una mail ed inviarla tramite il proprio client di posta diventa semplicissimo nel momento in cui usiamo la funzione API ShellExecute. Il più grosso vantaggio evidente di questa tecnica è il non dover occuparsi direttamente dell&#8217;invio in quanto la API aprirà direttamente la mail creata nel client di posta predefinito. Gli svantaggi potrebbero essere [...]]]></description>
			<content:encoded><![CDATA[<p>Creare una mail ed inviarla tramite il proprio client di posta diventa semplicissimo nel momento in cui usiamo la funzione API ShellExecute. Il più grosso vantaggio evidente di questa tecnica è il non dover occuparsi direttamente dell&#8217;invio in quanto la API aprirà direttamente la mail creata nel client di posta predefinito. Gli svantaggi potrebbero essere il non poter allegare documenti, non poter mettere immagini nel testo se non caricate tramite un link html, l&#8217;invio non è automatico ma bisogna dare al client di posta la conferma all&#8217;invio.</p>
<p><em>uses ShellApi;</em></p>
<p><em>&#8230;</em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>procedure TForm1.sendClick(Sender: TObject);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>var</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>pch:Pchar;</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>begin</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>pch:=pchar(&#8217;mailto:&#8217;+toemail.Text+&#8217;?subject=&#8217;+subject.Text+&#8217;&amp;body=&#8217;+body.Text);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>ShellExecute(0, &#8216;open&#8217;,pch, nil, nil, SW_SHOWNORMAL);</em></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 51px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><em>end;</em></div>
<p><em>procedure TForm1.sendClick(Sender: TObject);</em></p>
<p><em>var</em></p>
<p style="padding-left: 30px;"><em> pch:Pchar;</em></p>
<p><em>begin</em></p>
<p style="padding-left: 30px;"><em>pch:=pchar(&#8217;mailto:&#8217;+toemail.Text+&#8217;?subject=&#8217;+subject.Text+&#8217;&amp;body=&#8217;+body.Text);</em></p>
<p style="padding-left: 30px;"><em>ShellExecute(0, &#8216;open&#8217;,pch, nil, nil, SW_SHOWNORMAL);</em></p>
<p><em>end;</em></p>
<p>Con MS-Outlook è anche possibile inserire degli allegati, la stringa in questo caso diventa:</p>
<p style="padding-left: 30px;"><em>mailto:info@microsoft.com?Subject=subject_Text&amp;Body=body_Text&amp;</em><span style="font-family: monospace; line-height: 17px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">&amp;Attach=&#8221;c:\Delphi_Mail_Attachments\attachment.txt&#8221;</span></p>
<p>Se il client di posta non si dovesse aprire (esempio: Windows Vista con Windows Mail) è necessario entrare in pannello di controllo fare l&#8217;associazione.</p>
<p>Pannello di controllo-&gt;Programmi predefiniti-&gt;Associa un tipo di file a un programma-&gt;Associare MAILTO a Windows Mail</p>
<p>Potete scaricare i sorgenti e l’eseguibile di esempio da qui: <a href="http://www.delphi-blog.it/wp-content/uploads/2011/02/Send_Email_API.zip">Send_Email_API</a></p>
<div class="compatibilita">
<h6>Compatibile con:</h6>
<ul>
<li>Windows XP: SI</li>
<li>Windows VISTA: SI</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2011/02/inviare-e-mail-con-shellexecute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Riprodurre un suono wav in maniera semplice</title>
		<link>http://www.delphi-blog.it/2010/12/riprodurre-un-suono-wav-in-maniera-semplice/</link>
		<comments>http://www.delphi-blog.it/2010/12/riprodurre-un-suono-wav-in-maniera-semplice/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 09:23:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[mmsystem]]></category>
		<category><![CDATA[PlaySound]]></category>
		<category><![CDATA[wav]]></category>
		<category><![CDATA[windows vista]]></category>
		<category><![CDATA[windows xp]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=105</guid>
		<description><![CDATA[Per riprodurre un file audio di tipo wav utiliamo una API molto immediata inclusa nella unit MMSystem:
BOOL PlaySound(pszSound:PAnsiChar; hmod: Cardinal; fdwSound: Cardinal);


Descrizione dei parametri
pszSound : stringa che specifica il suono da riprodurre. Se diamo a questo parametro NULL tutte le riproduzioni wav si fermano.
hmod: Handle dell&#8217;eseguibile che contiene la risorsa da caricare.
fdwSound: flags che può [...]]]></description>
			<content:encoded><![CDATA[<p>Per riprodurre un file audio di tipo wav utiliamo una API molto immediata inclusa nella unit MMSystem:</p>
<p><em>BOOL PlaySound(pszSound:PAnsiChar; hmod: Cardinal; fdwSound: Cardinal);</em></p>
<p><em><br />
</em></p>
<p><span style="text-decoration: underline;">Descrizione dei parametri</span></p>
<p><em>pszSound </em>: stringa che specifica il suono da riprodurre. Se diamo a questo parametro NULL tutte le riproduzioni wav si fermano.</p>
<p><em>hmod</em>: Handle dell&#8217;eseguibile che contiene la risorsa da caricare.</p>
<p><em>fdwSound</em>: flags che può assumere i seguenti valori</p>
<p style="padding-left: 30px; "><em>SND_APPLICATION: </em>The sound is played using an application-specific association.</p>
<p style="padding-left: 30px;"><em>SND_ALIAS: </em>The pszSound parameter is a system-event alias in the registry or the WIN.INI file. Do not use with either SND_FILENAME or SND_RESOURCE.</p>
<p style="padding-left: 30px;"><em>SND_ALIAS_ID</em>:  The pszSound parameter is a predefined sound identifier.</p>
<p style="padding-left: 30px;"><em>SND_ASYNC: </em>The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.</p>
<p style="padding-left: 30px;"><em>SND_FILENAME: </em>The pszSound parameter is a filename.</p>
<p style="padding-left: 30px;"><em>SND_LOOP</em>: The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. You must also specify the SND_ASYNC flag to indicate an asynchronous sound event.</p>
<p style="padding-left: 30px;"><em>SND_MEMORY</em>:  A sound event&#8217;s file is loaded in RAM. The parameter specified by pszSound must point to an image of a sound in memory.</p>
<p style="padding-left: 30px;"><em>SND_NODEFAULT</em>: No default sound event is used. If the sound cannot be found, PlaySound returns silently without playing the default sound.</p>
<p style="padding-left: 30px;"><em>SND_NOSTOP: </em>The specified sound event will yield to another sound event that is already playing. If a sound cannot be played because the resource needed to generate that sound is busy playing another sound, the function immediately returns FALSE without playing the requested sound.<br />
If this flag is not specified, PlaySound attempts to stop the currently playing sound so that the device can be used to play the new sound.</p>
<p style="padding-left: 30px;"><em>SND_NOWAIT: </em>If the driver is busy, return immediately without playing the sound.</p>
<p style="padding-left: 30px;"><em>SND_PURGE: </em>Sounds are to be stopped for the calling task. If pszSound is not NULL, all instances of the specified sound are stopped. If pszSound is NULL, all sounds that are playing on behalf of the calling task are stopped.<br />
You must also specify the instance handle to stop SND_RESOURCE events.</p>
<p style="padding-left: 30px;"><em>SND_RESOURCE: </em>The pszSound parameter is a resource identifier; hmod must identify the instance that contains the resource.</p>
<p style="padding-left: 30px;"><em>SND_SYNC: </em>Synchronous playback of a sound event. PlaySound returns after the sound event completes.</p>
<p>Esempio:</p>
<p><em>uses<br />
MMSystem;</em></p>
<p><em>//Riproduzione singola</em></p>
<p><em>procedure TForm1.Button1.Click;<br />
begin<br />
PlaySound(&#8217;c:\eric.wav&#8217;, 0, SND_FILENAME + SND_ASYNC);<br />
end;</em></p>
<p><em>//Riproduzione in loop</em></p>
<p><em>procedure TForm1.Button2.Click;<br />
begin<br />
PlaySound(&#8217;c:\eric.wav&#8217;, 0, SND_LOOP + SND_ASYNC);<br />
end;</em></p>
<p><em>//Stop del loop</em></p>
<p><em>procedure TForm1.Button3.Click;<br />
begin<br />
PlaySound(nil, 0, 0);<br />
end;</em></p>
<p><strong>Compatibile con:</strong></p>
<ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 1px; list-style-type: none; list-style-position: initial; list-style-image: initial; overflow-x: hidden; overflow-y: hidden; height: 75px; margin: 0px;">
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows XP: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows VISTA: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows 7: DA VERIFICARE</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2010/12/riprodurre-un-suono-wav-in-maniera-semplice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recuperare la lingua di default del sistema</title>
		<link>http://www.delphi-blog.it/2010/07/recuperare-la-lingua-di-default-del-sistema/</link>
		<comments>http://www.delphi-blog.it/2010/07/recuperare-la-lingua-di-default-del-sistema/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:56:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[GetSystemDefaultLangID]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[lingua]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=108</guid>
		<description><![CDATA[Questa funzione permette di recuperare la lingua di default impostata sul sistema, si compone di due funzioni: GetSystemDefaultLangID che restituisce il binary Microsoft language identifier in formato word (es. 1040 per italia) e della funzione VerLanguageName che recupera la descrizione della lingua associata al binary Microsoft language identifier.
function recupera_lingua: string;
var
lingua: array [0..50] of char;

begin

VerLanguageName(GetSystemDefaultLangID,lingua, 50);
Result := [...]]]></description>
			<content:encoded><![CDATA[<p>Questa funzione permette di recuperare la lingua di default impostata sul sistema, si compone di due funzioni: GetSystemDefaultLangID che restituisce il binary Microsoft language identifier in formato word (es. 1040 per italia) e della funzione VerLanguageName che recupera la descrizione della lingua associata al binary Microsoft language identifier.</p>
<p><em>function recupera_lingua: string;</em></p>
<p><em>var</em></p>
<p style="padding-left: 30px;"><em>lingua: array [0..50] of char;<br />
</em></p>
<p><em>begin<br />
</em></p>
<p style="padding-left: 30px;"><em>VerLanguageName(GetSystemDefaultLangID,lingua, 50);</em></p>
<p style="padding-left: 30px;"><em>Result := StrPas(Lang_array);</em></p>
<p><em> end;</em></p>
<p><strong>Compatibile con:</strong></p>
<ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 10px; padding-left: 1px; list-style-type: none; list-style-position: initial; list-style-image: initial; overflow-x: hidden; overflow-y: hidden; height: 75px; margin: 0px;">
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows XP: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows VISTA: SI</li>
<li style="padding-top: 0px; padding-right: 0px; padding-bottom: 9px; padding-left: 12px; background-image: url(http://www.delphi-blog.it/wp-content/themes/delphi_blog/images/marker.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; list-style-image: initial; list-style-type: none; list-style-position: initial; font-weight: normal; background-position: 0px 5px; background-repeat: no-repeat no-repeat; margin: 0px;">Windows 7: DA VERIFICARE</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2010/07/recuperare-la-lingua-di-default-del-sistema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizzare Microsoft Speech API nelle nostre applicazioni</title>
		<link>http://www.delphi-blog.it/2009/11/utilizzare-microsoft-speech-api-nelle-nostre-applicazioni/</link>
		<comments>http://www.delphi-blog.it/2009/11/utilizzare-microsoft-speech-api-nelle-nostre-applicazioni/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 19:49:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[System]]></category>
		<category><![CDATA[comobj]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[SAPI]]></category>
		<category><![CDATA[speech]]></category>
		<category><![CDATA[Speech API]]></category>
		<category><![CDATA[text-to-speech]]></category>
		<category><![CDATA[voice]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=103</guid>
		<description><![CDATA[Una modalità molto semplice per sfruttare SAPI (Speech API).  Da me utilizzata per dare il buongiorno al caricamento dell&#8217;applicazione o in particolari situazioni dove l&#8217;utente pilota ad esempio una pistola per codice a barre e il programma gli torna lo stato di quel prodotto nel magazzino.
Includiamo anzitutto la unit Comobj:
uses Comobj;
E ora il semplice codice [...]]]></description>
			<content:encoded><![CDATA[<p>Una modalità molto semplice per sfruttare SAPI (Speech API).  Da me utilizzata per dare il buongiorno al caricamento dell&#8217;applicazione o in particolari situazioni dove l&#8217;utente pilota ad esempio una pistola per codice a barre e il programma gli torna lo stato di quel prodotto nel magazzino.</p>
<p>Includiamo anzitutto la unit Comobj:</p>
<p><em>uses Comobj;</em></p>
<p>E ora il semplice codice da inserire per ottenere la lettura della nostra stringa:</p>
<p><em>var</em></p>
<p style="padding-left: 30px; "><em>voce: OLEVariant;<br />
</em></p>
<p><em>begin<br />
</em></p>
<p style="padding-left: 30px; "><em>voce := CreateOLEObject(&#8217;SAPI.SpVoice&#8217;);<br />
</em></p>
<p style="padding-left: 30px; "><em>voce.Speak(&#8217;Ciao Mondo!&#8217;, 0);<br />
</em></p>
<p><em>end;</em></p>
<p>Veramente immediato. Ovviamente questo semplice codice legge nella lingua di default del motore text-to-speech installato. Prossimamente vedremo come utilizzare la voce italiana.</p>
<div class="compatibilita">
<h6>Compatibile con:</h6>
<ul>
<li>Windows XP: SI</li>
<li>Windows VISTA: SI</li>
<li>Windows 7: DA VERIFICARE</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2009/11/utilizzare-microsoft-speech-api-nelle-nostre-applicazioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recuperare il nome della stampante di default &#8211; default printer</title>
		<link>http://www.delphi-blog.it/2009/11/recuperare-il-nome-della-stampante-di-default-default-printer/</link>
		<comments>http://www.delphi-blog.it/2009/11/recuperare-il-nome-della-stampante-di-default-default-printer/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 08:48:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Stampanti]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[stampante]]></category>

		<guid isPermaLink="false">http://www.delphi-blog.it/?p=102</guid>
		<description><![CDATA[Per recuperare il nome della stampante di default possiamo utilizzare l&#8217;oggetto printer. Innanzitutto c&#8217;è dobbiamo includere la unit &#8220;printers&#8221;.
unit printers;
E recuperiamo il nome nel seguente modo:
 Printer.PrinterIndex := -1;
NomeStampanteDefault := Printer.Printers.Strings[Printer.PrinterIndex];

Compatibile con:

Windows XP: SI
Windows VISTA: SI
Windows 7: DA VERIFICARE


]]></description>
			<content:encoded><![CDATA[<p>Per recuperare il nome della stampante di default possiamo utilizzare l&#8217;oggetto printer. Innanzitutto c&#8217;è dobbiamo includere la unit &#8220;printers&#8221;.</p>
<p><em>unit printers;</em></p>
<p>E recuperiamo il nome nel seguente modo:</p>
<p><em> Printer.PrinterIndex := -1;<br />
NomeStampanteDefault := Printer.Printers.Strings[Printer.PrinterIndex];</em></p>
<div class="compatibilita">
<h6>Compatibile con:</h6>
<ul>
<li>Windows XP: SI</li>
<li>Windows VISTA: SI</li>
<li>Windows 7: DA VERIFICARE</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.delphi-blog.it/2009/11/recuperare-il-nome-della-stampante-di-default-default-printer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

