tag:blogger.com,1999:blog-9674302538374569832024-03-14T00:06:59.320-03:00ProgMasterTudo sobre programação, PHP, asp, Delphi, visual basic, C++, C#, SQL e muito mais...Jeffersonhttp://www.blogger.com/profile/01446587263370792889noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-967430253837456983.post-91232396942919883232021-02-26T16:39:00.003-03:002021-02-26T16:39:37.700-03:00Como converter Json para Dataset no C++ Builder<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-lTVuPK81k20/YDlOH-guc3I/AAAAAAAAA0U/p7yyq7Nc9vwfdkYci2gtnqOlE-baHEmSACLcBGAsYHQ/s512/json-file-1-504451.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="231" src="https://1.bp.blogspot.com/-lTVuPK81k20/YDlOH-guc3I/AAAAAAAAA0U/p7yyq7Nc9vwfdkYci2gtnqOlE-baHEmSACLcBGAsYHQ/w231-h231/json-file-1-504451.png" width="231" /></a></div><br /><p><br /></p><p>Cabeçalho</p><p>#include <REST.Response.Adapter.hpp></p><p>#include <System.JSON.hpp></p><p>#include <Datasnap.DBClient.hpp></p><p><br /></p><p>função que transfere os dados json para um dataset:</p>
<pre style="background-attachment: initial; background-clip: initial; background-color: #f0f0f0; background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; overflow-wrap: normal; word-wrap: normal;"> void JsonToDataset(TDataSet *aDataset, UnicodeString aJson)
{
TJSONArray *JObj = new TJSONArray;
TCustomJSONDataSetAdapter *vConv = new TCustomJSONDataSetAdapter(Form1);
if (aJson == EmptyStr){
exit(0);
}
JObj = dynamic_cast<TJSONArray*>(TJSONObject::ParseJSONValue(aJson));
vConv->Dataset = aDataset;
vConv->UpdateDataSet(JObj);
}
</code></pre>
<br /><div>Chamando a função:</div>
<pre style="background-attachment: initial; background-clip: initial; background-color: #f0f0f0; background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; background: #f0f0f0; border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; overflow-wrap: normal; word-wrap: normal;"> UnicodeString str = Memo1->Text; // string json trazida de um memo
JsonToDataset(Form1->FDMemTable1,str); // TFdmemTable passado como parâmetro, ele é nosso dataset
</code></pre>
<br />Jeffersonhttp://www.blogger.com/profile/01446587263370792889noreply@blogger.com0tag:blogger.com,1999:blog-967430253837456983.post-41644991139278941942020-02-14T08:54:00.000-03:002020-02-14T08:57:39.616-03:00Erro: missing content-type boundary [RESOLVIDO]<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Se você está recebendo esse erro ao efetuar uma requisição pelo método post provavelmente é porque esqueceu de adicionar o boundary ao cabeçalho da requisição, veja aqui como resolver:<br />
<br />
Veja um exemplo em Delphi de como resolver esse problema:<br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">1: NetHTTPClient.CustomHeaders['Authorization'] := 'Bearer ' + Ftoken;
2: Params := TIdMultipartFormDataStream.Create;
3: params.AddFile('arquivosXml', UTF8Encode(caminhoArquivo),'multipart/form-data');
4: NethttpClient.ContentType := 'multipart/form-data; boundary='+params.Boundary;
5: retorno := NetHTTPClient.POST(baseurl + parametro,Params).</code>ContentAsString; </pre>
</div>
<br />
<h4 style="text-align: center;">
<b>Resumindo:</b> </h4>
<div style="text-align: left;">
<b>basta adicionar <span style="background-color: #f0f0f0; font-family: "arial"; font-size: 12px;">NethttpClient.ContentType := 'multipart/form-data; boundary='+params.Boundary;</span></b></div>
<div style="text-align: left;">
<b><br /></b></div>
<div style="text-align: left;">
<b>funciona para idhttp e qualquer outro componente que aceite TIdMultipartFormDataStream.</b></div>
<div style="text-align: left;">
<b><br /></b></div>
<div style="text-align: left;">
<b>Espero ter ajudado, até a próxima.</b></div>
</div>
Jeffersonhttp://www.blogger.com/profile/01446587263370792889noreply@blogger.com0tag:blogger.com,1999:blog-967430253837456983.post-1536064075881011432013-05-06T14:22:00.002-03:002013-05-06T14:22:29.541-03:00Capturar áudio da placa de som com Delphi<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZtA0TLQJjNk/UYfmrnkciuI/AAAAAAAAAWA/9Q39Xwu4B7M/s1600/placa-de-som-71-encore-enm232-8-pci-8-canais-dolby-24-bits_MLB-F-178028069_1944.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="http://1.bp.blogspot.com/-ZtA0TLQJjNk/UYfmrnkciuI/AAAAAAAAAWA/9Q39Xwu4B7M/s320/placa-de-som-71-encore-enm232-8-pci-8-canais-dolby-24-bits_MLB-F-178028069_1944.jpg" width="320" /></a></div>
<br />
<br />
Adicione a sessão uses <b>MMSystem</b><br />
<b><br /></b>
<b><br /></b>
<b>Código para iniciar gravação do áudio:</b><br />
<b><br /></b>
<br />
<br />
mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound', nil, 0, Handle);<br />
mciSendString('SET mysound TIME FORMAT MS ' +<br />
'BITSPERSAMPLE 32 ' +<br />
'CHANNELS 20 ' +<br />
'SAMPLESPERSEC 250 ' +<br />
'BYTESPERSEC 180000',<br />
nil, 0, Handle);<br />
mciSendString('RECORD mysound', nil, 0, Handle);<br />
<br />
<br />
<b>Código para parar gravação:</b><br />
<b><br /></b>
mciSendString('STOP mysound', nil, 0, Handle);<br />
<br />
<br />
<b>Código para salvar o som wav:</b><br />
<b><br /></b>
<br />
var<br />
arquivo: String;<br />
begin<br />
GetDir(0, arquivo);<br />
mciSendString(PChar('SAVE mysound ' + arquivo + '/test.wav'), nil, 0, Handle);<br />
mciSendString('CLOSE mysound', nil, 0, Handle);<br />
<br />
// no exemplo acima o som é salvo no mesmo diretório do executável.<br />
<br />
<br /></div>
Jeffersonhttp://www.blogger.com/profile/01446587263370792889noreply@blogger.com0tag:blogger.com,1999:blog-967430253837456983.post-70431438113971261552011-08-08T01:03:00.002-03:002011-08-08T01:03:55.119-03:00dbGrid zebrado (Delphi)<div dir="ltr" style="text-align: left;" trbidi="on"><div class="post-header"></div>Quando utilizamos dbGrid e este recebe muitos registros fica dificil ler toda a linha, principalmente se possuimos um grande número de colunas, um recurso que podemos lançar mão para ao menos amenizar essa situação é o efeito "zebrado", onde temos linhas com cores diferentes, na verdade duas cores diferentes que se intercalam. Então vamos ao exemplo, no evento OnDrawColumnCell:<br />
<div class="post-body entry-content"><br />
<div class="MsoNormal"><span style="font-size: 100%;"><span style="color: black;"><span style="font-weight: bold;">if odd</span>(ClientDataSet4.RecNo) <span style="font-weight: bold;">then</span><br />
DBGrid1.Canvas.Brush.Color:= clmenubar<br />
<span style="font-weight: bold;">else</span><br />
DBGrid1.Canvas.Brush.Color:= clCream;</span><br />
<br />
TDbGrid(Sender).Canvas.font.Color:= clBlack;<br />
</span><span style="font-size: 100%;"><span style="color: black;"><span style="font-weight: bold;">if </span>gdSelected in State <span style="font-weight: bold;">then</span><br />
<span style="font-weight: bold;">with </span>(Sender as TDBGrid).Canvas <span style="font-weight: bold;">do</span><br />
<span style="font-weight: bold;">begin</span><br />
Brush.Color := clmoneygreen;<br />
FillRect(Rect);<br />
Font.Style := [fsbold]<br />
<span style="font-weight: bold;">end;</span></span><br />
<br />
TDbGrid(Sender).DefaultDrawDataCell(Rect, TDbGrid(Sender).columns[datacol].field, State);</span></div></div></div>Jeffersonhttp://www.blogger.com/profile/01446587263370792889noreply@blogger.com0