Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Você está aqui: C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
|
Aprenda a usar a função midiOutOpen() do Windows para abrir o dispositivo de saída MIDIQuantidade de visualizações: 977 vezes |
|
Antes de tocarmos uma nota MIDI ou até mesmo um grupo de eventos MIDI, precisamos entender como abrir o dispositivo de saída MIDI. Para isso podemos usar a função midiOutOpen() da API do Windows. Essa função possui a seguinte assinatura:MMRESULT midiOutOpen( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen ); O parâmetro LPHMIDIOUT aponta para um handle do tipo HMIDIOUT, o qual nos permite identificar o dispositivo MIDI aberto. O parâmetro uDeviceID identifica a saída MIDI que vai ser aberta. O parâmetro dwCallback representa uma função de callback ou um gerenciador de eventos. O parâmtro dwInstance representa dados de instância do usuário para a função de callback. O parâmetro fdwOpen é uma flag de callback para abrir o dispositivo. Os valores válidos são: CALLBACK_EVENT, CALLBACK_FUNCTION, CALLBACK_NULL, CALLBACK_THREAD e CALLBACK_WINDOW. Veja um trecho de código no qual usamos a função midiOutOpen() para abrir o dispositivo de saída MIDI e então usamos midiOutClose() para fechá-lo. Não se esqueça que você precisa do Windows SDK instalado. Para este exemplo eu usei o Visual Studio 2017 (com a biblioteca winmm.lib referenciada nas dependências adicionais de entrada do veiculador - linker). #include <cstdlib> #include <iostream> #include <windows.h> using namespace std; int main(int argc, char *argv[]) { unsigned int erro; // guarda o erro caso algo dê errado HMIDIOUT saida; // handle para o dispositivo de saída MIDI. // vamos abrir o dispositivo de saída MIDI erro = midiOutOpen(&saida, MIDI_MAPPER, 0, 0, CALLBACK_NULL); if (erro != MMSYSERR_NOERROR) { printf("Não foi possível abrir o mapeador MIDI: %d\n", erro); } else { printf("Mapeador MIDI aberto com sucesso\n"); } // agora vamos fechar o dispositivo de saída MIDI midiOutClose(saida); system("PAUSE"); return EXIT_SUCCESS; } Veja que aqui eu forneci o valor MIDI_MAPPER para o parâmetro uDeviceID. MIDI_MAPPER representa o dispositivo padrão. Porém, se você tiver mais de um dispositivo de saída MIDI instalado, poderá referenciá-los pelos valores 0, 1, 2, 3, etc. Execute o código e veja o resultado. Se você vir a mensagem "Mapeador MIDI aberto com sucesso" então seu dispositivo de saída MIDI foi acessado e está pronto para receber mensagens. |
|
Link para compartilhar na Internet ou com seus amigos: | |
C# ::: Windows Forms ::: DataGridView |
Como ligar um DataGridView do C# Windows Forms à tabela de um banco de dados e efetuar inserção, alteração e remoção de registrosQuantidade de visualizações: 32467 vezes |
Uma das principais dúvidas que recebo em meu site é em relação aos passos necessários para associar um DataGridView com a tabela de um banco de dados e listar os dados. Em tempo de design este processo é relativamente fácil, visto que temos wizards que nos acompanham e fazem o trabalho mais pesado nos bastidores. No entanto, o cenário é completamente diferente quando temos que realizar tal tarefa via código. Espero que esta dica o deixe mais preparado para enfrentar tais situações. Para esta dica eu fiz uma conexão Visual C# 2005 + MySQL 5.0 usando ODBC (caso tenha dúvidas sobre isso, veja minha seção sobre C# + MySQL). Criei uma tabela MySQL chamada clientes contendo id, nome, idade, cidade e estado do cliente. Criei uma classe de conexão, inseri um DataGridView no formulário e coloquei as declarações abaixo na classe do formulário Form1.cs (fora dos métodos, para que os dados sejam globais na classe): // membros de instância de acesso global na classe // Dica: Se estiver usando SQL Server, troque "Odbc" por // "Sql" (Ex: SQLConnection, SqlCommand, SqlDataAdapter) // conexão com o banco de dados OdbcConnection conn = null; OdbcCommand cmd = null; OdbcDataAdapter adapter = null; DataSet ds = null; Em seguida colocamos o código abaixo no evento Click de um botão: private void button4_Click(object sender, EventArgs e){ // Dica: Se estiver usando SQL Server, troque "Odbc" // por "Sql" (Ex: SqlCommand, SqlDataAdapter, etc) // obtém a conexão com o banco de dados conn = ConexaoODBC.obterConexao(); if(conn != null){ // obtém todos os clientes cadastrados cmd = new OdbcCommand("SELECT * FROM clientes", conn); adapter = new OdbcDataAdapter(cmd); ds = new DataSet(); adapter.Fill(ds, "clientes_table"); // exibe os dados da tabela no DataGridView dataGridView1.DataSource = ds; dataGridView1.DataMember = "clientes_table"; // fecha a conexão ConexaoODBC.fecharConexao(); } } Aqui os dados já são listados no DataGridView. Porém, as alterações efetuadas no controle ainda não são repassadas para o banco de dados. Veja o código adicional no evento Click de outro botão: private void button5_Click(object sender, EventArgs e){ // vamos salvar os dados do DataGridView para a tabela do // banco de dados // Dica: Se estiver usando SQL Server, troque "Odbc" por // "Sql" (Ex: SqlCommandBuilder) // obtém a conexão com o banco de dados conn = ConexaoODBC.obterConexao(); if(conn != null){ OdbcCommandBuilder cmb = new OdbcCommandBuilder(adapter); cmb.GetUpdateCommand(); adapter.Update(ds.Tables["clientes_table"]); // fecha a conexão ConexaoODBC.fecharConexao(); } } Pronto! Execute a aplicação, clique no primeiro botão para carregar os dados da tabela MySQL no DataGridView. Em seguida efetue algumas alterações, insira ou exclua linhas e clique no segundo botão. Feche a aplicação e abra-a novamente e se certifique de que os registros foram atualizados, inseridos ou removidos com sucesso. |
Java ::: Coleções (Collections) ::: ArrayList |
Como pesquisar valores em uma ArrayList do Java usando a função indexOf() - Coleção Java para iniciantesQuantidade de visualizações: 16403 vezes |
Nesta dica eu mostrarei como podemos usar o método indexOf() para verificar a existência de um valor em uma ArrayList. Se o ítem for encontrado, seu índice (começando em 0) é retornado, do contrário o valor retornado é -1. Veja o código Java completo para o exemplo: package arquivodecodigos; import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<String>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); nomes.add("Maria"); // Verifica se o valor "Osmar" existe na // ArrayList int indice = nomes.indexOf("Osmar"); if(indice == -1){ System.out.println("O valor pesquisado não foi encontrado."); } else{ System.out.println("O valor foi encontrado no índice: " + indice); } System.exit(0); } } Ao executar este código nós teremos o seguinte resultado: O valor foi encontrado no índice: 3 |
C# ::: Datas e Horas ::: DateTime |
Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTimeQuantidade de visualizações: 10032 vezes |
Em algumas situações nossos códigos precisam adicionar ou subtrair meses de uma data. Isso pode ser feito com o auxílio do método AddMonths() da estrutura DateTime. Este método recebe o número de meses a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 3 meses à data atual: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos adicionar 3 meses à data de hoje DateTime data_futura = hoje.AddMonths(3); // exibe a data daqui a três meses System.Console.WriteLine("Daqui a 3 meses será {0:d}", data_futura); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } É possível também subtrair meses. Para isso só precisamos fornecer um valor negativo para o método AddMonths(). Veja: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos subtrair 5 meses da data de hoje DateTime data_passado = hoje.AddMonths(-5); // exibe a data 5 meses atrás System.Console.WriteLine("Há 5 meses era {0:d}", data_passado); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } Lembre-se, contudo, que o método AddMonths() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. Esta exceção também será disparada se o valor fornecido para o mês for menor que -120.000 ou maior que 120.000. |
Java ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em Java - Como obter a quantidade de nós em uma lista singularmente ligada usando JavaQuantidade de visualizações: 6810 vezes |
Em algumas situações precisamos obter a quantidade de nós em uma lista singularmente ligada. Nesta dica eu mostro como isso pode ser feito. Aqui estou assumindo que você criou uma lista singularmente ligada que possui dois nós gerenciadores, ou seja, uma referência para o primeiro nó na lista e uma referência para o último nó. Veja o código para um método que retorna a quantidade de nós na lista: // método que permite exibir os valores de // todos os nós da lista public int tamanho() { int tam = 0; // representa a quantidade de nós na lista // vamos obter uma referência ao início da lista No no = inicio; while (no != null) { // enquanto a lista não estiver vazia tam++; // incrementamos a variável tam no = no.proximo; // pula para o nó seguinte } return tam; } Veja como podemos chamar este nó a partir da classe principal da aplicação (Main.java): public class Main { public static void main(String[] args) { // vamos criar uma nova lista Lista lista = new Lista(); // insira alguns nós no início ou no final // da lista // exibe a quantidade de nós na lista System.out.println("A lista possui " + lista.tamanho() + " nós"); } } Ao executar a aplicação você terá um resultado parecido com: A lista possui 4 nós. |
C# ::: LINQ ::: LINQ to Objects |
Como retornar o menor elemento em um array de int em C# usando a função Min() do LINQQuantidade de visualizações: 906 vezes |
Nesta dica mostrarei, em um exemplo bem simples, como podemos usar o método Min() do LINQ (Language-Integrated Query) do C# para retornar o menor elemento de um vetor de inteiros. Note que temos um vetor de int com os valores {5, 2, 8, 3, 0, 1} e o valor 0 deverá ser retornado como sendo o menor. Veja o código completo para o exemplo: using System; using System.Linq; namespace Estudos { class Principal { static void Main(string[] args) { // vamos construir um vetor de inteiros int[] valores = {5, 2, 8, 3, 0, 1}; // vamos obter o menor elemento do vetor int menor = valores.Min(); // vamos mostrar o resultado Console.WriteLine("O menor valor é: {0}", menor); Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: O menor valor é: 0 Fique atento ao fato de que o método Min() pode atirar uma exceção do tipo InvalidOperation se o array ou coleção estiver vazia ou não incluir nenhum elemento que se encaixe nas condições testadas. Veja o resultado ao chamarmos este método em um vetor vazio: System.InvalidOperationException HResult=0x80131509 Message=Sequence contains no elements Source=System.Linq StackTrace: at System.Linq.ThrowHelper.ThrowNoElementsException() at System.Linq.Enumerable.Min(IEnumerable`1 source) at Estudos.Principal.Main(String[] args) in C:\estudos_c#\Estudos\Principal.cs:line 11 |
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |