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: Delphi ::: Dicas & Truques ::: BASS (bass.dll - Biblioteca de Áudio) |
|
BASS - O que é, como baixar e testar esta DLL de áudio em seus programas DelphiQuantidade de visualizações: 15431 vezes |
|
A BASS é uma biblioteca de áudio para uso no Windows e no software Mac OSX. Seu propósito é fornecer aos desenvolvedores uma ferramenta poderosa de sampleamento (samples), stream (MP3, MP2, MP1, OGG, WAV, AIFF, formatos customizados e outros mais via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs) e funções de gravação. Tudo isso em uma pequena DLL, apenas 97,5 Kb na versão 2.4. No Windows a BASS requer o DirectX 3 ou mais recente para saída de áudio e tira vantagem dos drivers de aceleração de hardware DirectSound and DirectSound3D, quando disponíveis. No OSX, a BASS use o CoreAudio para saída, e o OSX 10.3 ou mais recente é recomendado. Tanto o PowerPC quanto o Intel Macs são suportados. Além disso, a BASS também está disponível para as plataformas Win64, WinCE, Linux e iPhone. Nesta dica mostrarei como baixar e testar a BASS a partir de suas aplicações Delphi. Siga atentamente os passos abaixo: a) Acesse http://www.un4seen.com ou pesquise no Google ou seu site de busca favorito por "bass.dll". Baixe a versão mais recente e descompacte em um diretório de sua preferência. No diretório delphi você encontrará um arquivo bass.pas contendo as importações das funções da bass.dll. Copie este arquivo para o diretório do seu projeto Delphi; b) Agora copie a DLL bass.dll para o diretório de seu projeto ou para os diretórios Windows, System ou System32; c) Crie um nova aplicação Delphi e adicione a unit Bass no seu uses; d) Chegou a hora de testar. Acrescente o código abaixo no evento Click de um botão: procedure TForm1.Button1Click(Sender: TObject); begin // vamos verificar se a versão da bass.dll corresponde à versão contida // no Bass.pas (BASSVERSION = xxxx;) if HIWORD(BASS_GetVersion) <> BASSVERSION then begin // An incorrect version of BASS.DLL was loaded MessageBox(0, 'Uma versão incorreta da BASS.DLL foi carregada', nil, MB_ICONERROR); Halt; end; // Initialize audio - default device, 44100hz, stereo, 16 bits // Vamos inicializar o áudio - dispositivo padrão, 44100hz, stereo, 16 bits if not BASS_Init(-1, 44100, 0, Handle, nil) then // Error initializing audio! Error('Houve um erro ao inicializar o áudio') else ShowMessage('Áudio inicializado com sucesso.'); end; Neste código nós efetuamos uma chamada à procedure Error. Mais abaixo você encontrará o local no qual ela deverá ser inserida. Uma vez inicializada a bass.dll, podemos executar uma música WAV, AIFF, MP3, MP2, MP1 ou OGG da seguinte forma: procedure TForm1.Button2Click(Sender: TObject); var arquivo: String; // nome do arquivo MP3 musica: HSAMPLE; // um handle para a amostra (sample) ch: HCHANNEL; // um handle para o canal de execução begin if not OpenDialog1.Execute then Exit; // vamos carregar a música WAV, AIFF, MP3, MP2, MP1 ou OGG a ser executada arquivo := OpenDialog1.FileName; musica := BASS_SampleLoad(FALSE, PChar(arquivo), 0, 0, 3, BASS_SAMPLE_OVER_POS); // vamos obter o canal de execução ch := BASS_SampleGetChannel(musica, False); // vamos centralizar o som (igual dos dois lados) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_PAN, 0); // vamos definir o volume (0 = silêncio; 1 = volume total) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, 1); if not BASS_ChannelPlay(ch, False) then // Error playing sample! Error('Erro ao executar a amostra!'); end; E, para facilitar o estudo dos iniciantes, segue o código completo para a unit usada nesta demonstração: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Bass, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } procedure Error(msg: string); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Error(msg: string); var s: string; begin // Error code s := msg + #13#10 + '(Código de erro: ' + IntToStr(BASS_ErrorGetCode) + ')'; MessageBox(Handle, PChar(s), nil, 0); end; procedure TForm1.Button1Click(Sender: TObject); begin // vamos verificar se a versão da bass.dll corresponde à versão contida // no Bass.pas (BASSVERSION = xxxx;) if HIWORD(BASS_GetVersion) <> BASSVERSION then begin // An incorrect version of BASS.DLL was loaded MessageBox(0, 'Uma versão incorreta da BASS.DLL foi carregada', nil, MB_ICONERROR); Halt; end; // Initialize audio - default device, 44100hz, stereo, 16 bits // Vamos inicializar o áudio - dispositivo padrão, 44100hz, stereo, 16 bits if not BASS_Init(-1, 44100, 0, Handle, nil) then // Error initializing audio! Error('Houve um erro ao inicializar o áudio') else ShowMessage('Áudio inicializado com sucesso.'); end; procedure TForm1.Button2Click(Sender: TObject); var arquivo: String; // nome do arquivo MP3 musica: HSAMPLE; // um handle para a amostra (sample) ch: HCHANNEL; // um handle para o canal de execução begin if not OpenDialog1.Execute then Exit; // vamos carregar a música WAV, AIFF, MP3, MP2, MP1 ou OGG a ser executada arquivo := OpenDialog1.FileName; musica := BASS_SampleLoad(FALSE, PChar(arquivo), 0, 0, 3, BASS_SAMPLE_OVER_POS); // vamos obter o canal de execução ch := BASS_SampleGetChannel(musica, False); // vamos centralizar o som (igual dos dois lados) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_PAN, 0); // vamos definir o volume (0 = silêncio; 1 = volume total) BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, 1); if not BASS_ChannelPlay(ch, False) then // Error playing sample! Error('Erro ao executar a amostra!'); end; end. Há duas funcionalidades que devem ser acrescentadas a este código: a) Possibilidade de parar a música em execução; b) Fechar os canais de execução e a bass.dll, liberando a memória usada na alocação dos recursos. Em outras dicas desta seção você verá como isso pode ser feito. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
|
Link para compartilhar na Internet ou com seus amigos: | |
Rust ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como retornar o tamanho de um array em Rust usando a função len()Quantidade de visualizações: 378 vezes |
Em várias situações nós precisamos obter e retornar a quantidade de elementos em um vetor Rust, ou seja, um array. Para isso nós podemos usar a função len() do objeto Array. Veja um exemplo Rust no qual nós criamos um array com cinco elementos do tipo inteiro e em seguida usando a função len() para retornar o seu tamanho: // função principal do programa Rust fn main() { // vamos criar um array com 5 elementos let valores = [7, 3, 4, 9, 1]; // agora vamos obter o tamanho do array let tamanho = valores.len(); // e mostramos o resultado println!("O array possui {} elementos", tamanho); } Ao executar este código Rust nós teremos o seguinte resultado: O array possui 5 elementos |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercícios Resolvidos de Python - Escreva um programa em Python que usa a função log10() para informar a quantidade de dígitos em um número inteiroQuantidade de visualizações: 402 vezes |
Pergunta/Tarefa: Escreva um algorítmo em Python que peça para o usuário informar um número inteiro de qualquer tamanho, ou seja, qualquer quantidade de dígitos. Em seguida seu código deverá informar a quantidade de dígitos contida no número inteiro digitado pelo usuário. Seu programa deverá, obrigatoriamente, usar a função log10() do módulo Math. Sua saída deverá ser parecida com: Informe um número inteiro de qualquer tamanho: 847 O número informado possui 3 dígitos Veja a resolução comentada deste exercício usando Python: # vamos importar o módulo Math import math # método principal def main(): # vamos pedir para o usuário informar um número inteiro numero = int(input("Informe um número inteiro de qualquer tamanho: ")) # agora vamos obter a quantidade de dígitos no # número informado tamanho = int(math.log10(numero)) + 1 # mostramos o resultado print("O número informado possui {0} dígitos".format(tamanho)) if __name__== "__main__": main() |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de C++ - Uma função C++ que recebe um valor inteiro e informa se o mesmo é um número primoQuantidade de visualizações: 8550 vezes |
Exercícios Resolvidos de C++ - Uma função C++ que recebe um valor inteiro e informa se o mesmo é um número primo Pergunta/Tarefa: Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Escreva uma função C++ que recebe um valor inteiro e informe se o mesmo é um número primo. Você deverá usar a seguinte assinatura para a função: bool primo(int valor){ // implementação aqui } Informe um valor inteiro: 7 O numero informado é primo Veja a resolução comentada deste exercício em C++: #include <cstdlib> #include <iostream> using namespace std; // protótipo da função primo() bool primo(int); int main(int argc, char *argv[]){ int numero; setlocale(LC_ALL,""); // para acentos do português cout << "Informe um valor inteiro: "; cin >> numero; // vamos verificar se o valor informado é um número primo if(primo(numero)){ cout << "O numero informado é primo\n" << endl; } else{ cout << "O numero informado NÃO é primo\n" << endl; } system("PAUSE"); return EXIT_SUCCESS; } bool primo(int valor){ // se o valor fornecido for 7, a variável i do laço contará // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o // módulo de 7 por qualquer um dos valores neste intervalo // for igual a 0, então o número não é primo for(int i = 2; i <= (valor / 2); i++){ if(valor % i == 0){ return false; // não é primo } } return true; } |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter os tipos de tabelas suportados pelo MySQL usando o método getTableTypes() da classe DatabaseMetaDataQuantidade de visualizações: 5180 vezes |
Em algumas situações precisamos obter os tipos de tabelas suportados por uma determinada versão do MySQL. Isso pode ser feito com uma chamada ao método getTableTypes() da classe com.mysql.jdbc.DatabaseMetaData. Um objeto desta classe é obtido a partir do método getMetaData() da interface Connection (para o driver com.mysql.jdbc.Driver, é claro). A assinatura do método getTableTypes() é: public ResultSet getTableTypes() throws SQLException Vamos ver um exemplo? Veja um trecho de código que usei para listar os tipos de tabelas disponíveis no MySQL 5.0: package estudosbancodados; import java.sql.*; public class EstudosBancoDados{ public static void main(String[] args) { // strings de conexão String databaseURL = "jdbc:mysql://localhost/estudos"; String usuario = "root"; String senha = "osmar1234"; String driverName = "com.mysql.jdbc.Driver"; try { Class.forName(driverName).newInstance(); Connection conn = DriverManager.getConnection(databaseURL, usuario, senha); // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData DatabaseMetaData dbmd = conn.getMetaData(); // vamos obter os tipos de tabelas suportadas por esta versão do MySQL ResultSet tiposTabelas = dbmd.getTableTypes(); while(tiposTabelas.next()){ System.out.println(tiposTabelas.getString("TABLE_TYPE")); } // vamos fechar o ResultSet tiposTabelas.close(); } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } catch (Exception e) { System.out.println("Problemas ao tentar conectar com o banco de dados: " + e); } } } O resultado da execução deste código foi: TABLE VIEW LOCAL TEMPORARY |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como contar as ocorrências de uma substring em uma string Python usando a função count()Quantidade de visualizações: 9569 vezes |
Em várias ocasiões nós precisamos obter a quantidade de vezes que parte de uma palavra é encontrada em outra palavra, frase ou texto, ou seja, uma substring dentro de uma string. Para isso nós podemos usar o método count() da linguagem Python. Veja sua assinatura:count(substring[, início[, fim]]) Veja um código Python completo para este exemplo: # função principal do programa def main(): frase = "Gosto de Python porque Python é muito bom" # conta as ocorrências de "Python" print("\"Python\" ocorreu", frase.count("Python"), "vezes.") if __name__== "__main__": main() Ao executar este código nós teremos o seguinte resultado: "Python" ocorreu 2 vezes. |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
Java - Como usar null em Java |
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 |