Postagens

Como converter Json para Dataset no C++ Builder

Imagem
Cabeçalho #include <REST.Response.Adapter.hpp> #include <System.JSON.hpp> #include <Datasnap.DBClient.hpp> função que transfere os dados json para um dataset: 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); } Chamando a função: UnicodeString str = Memo1->Text; // string json trazida de um memo JsonToDataset(Form1->FDMemTable1,str); // TFdmemTable passado como parâmetro, ele é nosso dataset

Erro: missing content-type boundary [RESOLVIDO]

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: Veja um exemplo em Delphi de como resolver esse problema: 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). ContentAsString; Resumindo:   basta adicionar  NethttpClient.ContentType := 'multipart/form-data; boundary='+params.Boundary; funciona para idhttp e qualquer outro componente que aceite TIdMultipartFormDataStream. Espero ter ajudado, até a próxima.

Capturar áudio da placa de som com Delphi

Imagem
Adicione a sessão uses   MMSystem Código para iniciar gravação do áudio: mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound', nil, 0, Handle);   mciSendString('SET mysound TIME FORMAT MS ' +     'BITSPERSAMPLE 32 ' +     'CHANNELS 20 ' +     'SAMPLESPERSEC 250 ' +     'BYTESPERSEC 180000',     nil, 0, Handle);   mciSendString('RECORD mysound', nil, 0, Handle); Código para parar gravação: mciSendString('STOP mysound', nil, 0, Handle); Código para salvar o som wav: var   arquivo: String; begin   GetDir(0, arquivo);   mciSendString(PChar('SAVE mysound ' + arquivo + '/test.wav'), nil, 0, Handle);   mciSendString('CLOSE mysound', nil, 0, Handle); // no exemplo acima o som é salvo no mesmo diretório do executável.

dbGrid zebrado (Delphi)

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: if odd (ClientDataSet4.RecNo) then DBGrid1.Canvas.Brush.Color:= clmenubar else DBGrid1.Canvas.Brush.Color:= clCream; TDbGrid(Sender).Canvas.font.Color:= clBlack; if gdSelected in State then with (Sender as TDBGrid).Canvas do begin Brush.Color := clmoneygreen; FillRect(Rect); Font.Style := [fsbold] end; TDbGrid(Sender).DefaultDrawDataCell(Rect, TDbGrid(Sender).columns[datacol].field, State);