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: ActionScript ::: Dicas & Truques ::: Data e Hora |
|
Calculando a diferença em meses entre duas datasQuantidade de visualizações: 12245 vezes |
|
// Este exemplo mostra como calcular a diferença // de meses entre duas datas const MILLISECOND:Number = 1; const SECOND:Number = MILLISECOND * 1000; const MINUTE:Number = SECOND * 60; const HOUR:Number = MINUTE * 60; const DAY:Number = HOUR * 24; var data1:Date = new Date(2006, 5, 20); var data2:Date = new Date(2006, 3, 20); // diferença em milisegundos entre as duas datas var milis:Number = Math.abs(data1.getTime() - data2.getTime()); // diferença em meses e dias var meses:int = Math.floor(milis / DAY / 30); var dias:int = Math.floor(milis / DAY) % 30; Alert.show("A diferença entre as duas datas é " + meses + " meses e " + dias + " dias"); |
|
Link para compartilhar na Internet ou com seus amigos: | |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como abrir e fechar um dispositivo de saída MIDI usando DelphiQuantidade de visualizações: 11074 vezes |
Quando queremos executar sons MIDI no Windows, a primeira tarefa a ser realizada é abrir o dispositivo de saída MIDI. Isso é feito com uma chamada à função midiOutOpen() da API do Windows. Veja sua assinatura (em C):MMRESULT midiOutOpen( LPHMIDIOUT lphmo, UINT_PTR uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwCallbackInstance, DWORD dwFlags ); Esta função está traduzida na unit MMSystem.pas do Delphi da seguinte forma: function midiOutOpen(lphMidiOut: PHMIDIOUT; uDeviceID: UINT; dwCallback, dwInstance, dwFlags: DWORD): MMRESULT; stdcall; Antes de continuarmos, vamos entender os parâmetros desta função: lphmo - Este é um ponteiro para um HMIDIOUT (que é simplemente um Integer). Este ponteiro é preenchido com um handle identificando o dispositivo de saída MIDI aberto. Este handle é usado para identificar o dispositivo nas demais chamadas de saída MIDI. uDeviceID - Identificador do dispositivo de saída MIDI a ser aberto. O valor 0 aqui é seguro, visto que este identifica o primeiro dispositivo na lista de dispositivos de saída. Veja minha dica "Como obter uma lista dos dispositivos de saída MIDI no sistema" para mais informações. dwCallback - Um ponteiro para uma função de callback, um handle de evento, um identificador de thread ou um handle para uma janela ou thread chamada durante o playback do MIDI para processar mensagens relacionadas ao processo de playback. Se não houver nada a ser processado, podemos definir o valor 0 para este parâmetro. Dê uma olhada na minha dica relacionada à função MidiOutProc(). dwCallbackInstance - Dados de instância do usuário passados para a função de callback. Este parâmetro não é usado em callbacks de janela e thread. É seguro manter seu valor como 0. dwFlags - Flag de callback para abrir o dispositivo. Por enquanto vamos manter seu valor como CALLBACK_NULL. Veja minhas outras dicas sobre o assunto para aprofundar mais neste parâmetro. Agora que aprendemos mais sobre os parâmetros da função midiOutOpen(), vamos ver como usá-la para abrir um dispositivo de saída MIDI e tocar a nota DÓ média (aquela no meio da escala de notas possíveis). Veja o código completo para a unit: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MMSystem; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } dispositivo: HMIDIOUT; // dispositivo de saída MIDI public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var erro: Word; begin erro := midiOutOpen(@dispositivo, 0, 0, 0, CALLBACK_NULL); // houve erro na abertura do dispositivo de saída MIDI? if (erro <> 0) then begin ShowMessage('Não foi possível abrir o dispositivo MIDI. Erro: ' + IntToStr(erro)); end else begin ShowMessage('Dispositivo MIDI aberto com sucesso.'); // vamos tocar uma nota para nos certificarmos de que o dispositivo // realmente foi aberto e está funcionando // vamos tocar a nota DÓ média e com velocidade máxima midiOutShortMsg(dispositivo, rgb($90, 60, 127)); // vamos deixar a nota soar um pouco sleep(1000); // vamos silenciar a nota midiOutShortMsg(dispositivo, rgb($80, 60, 0)); // finalmente vamos fechar o dispositivo MIDI midiOutClose(dispositivo); end; end; end. O primeiro passo foi declarar uma variável do tipo HMIDIOUT: dispositivo: HMIDIOUT; Este é o dispositivo de saída que será usado nas demais chamadas MIDI, incluindo a função midiOutClose(), usada para fechar o dispositivo: midiOutClose(dispositivo); Na API do Windows está função está declarada da seguinte forma: MMRESULT midiOutClose( HMIDIOUT hmo ); Na unit MMSystem.pas do Delphi está função está traduzida da seguinte forma: function midiOutClose(hMidiOut: HMIDIOUT): MMRESULT; stdcall; Veja que só precisamos fornecer o nome da variável representando o dispositivo de saída MIDI aberto no momento para que a função se encarregue de fechá-lo. |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação orientada a objetos em Java - Java OOP - Como usar variáveis estáticas em suas classes JavaQuantidade de visualizações: 11603 vezes |
Variáveis estáticas podem ser definidas em Java por meio do uso da palavra-chave static. Uma variável estática pertence à classe na qual ela é definida e não à cada uma de suas instâncias. Pareceu confuso? Você pode pensar assim: quando definida com o modificador static, uma variável será única na classe, não importa a quantidade de instâncias da classe que serão criadas. Cada uma destas instâncias compartilhará o valor da variável estática. Além disso, uma variável estática pode ser acessada por meio do nome da classe, sem a necessidade de uma referência a uma de suas instâncias. Uma variável estática pode ser public, private ou protected. Vamos ver um exemplo? Considere a situação na qual gostaríamos de criar um identificador único para cada um dos objetos de uma classe. Veja o código para a classe Livro: Código para Livro.java: package estudos; public class Livro { // variáveis privadas private String titulo; // título do livro // variável estática que permitirá definir um // identificador único para cada livro private static int id; // construtor da classe Livro public Livro(){ // vamos incrementar a variável estática Livro.id++; } // método que permite obter o id do livro public int getId(){ return Livro.id; } // método que permite definir o título do livro public void setTitulo(String titulo){ this.titulo = titulo; } // método que permite obter o título do livro public String getTitulo(){ return this.titulo; } } Veja agora como criar três objetos da classe Livro a partir do método main() da aplicação: Código para Main.java: package estudos; public class Main { public static void main(String[] args) { // vamos criar um objeto da classe Livro Livro a = new Livro(); a.setTitulo("Programando em Java 2"); // vamos exibir os dados do livro System.out.println("Id: " + a.getId()); System.out.println("Titulo: " + a.getTitulo()); // vamos criar mais um livro Livro b = new Livro(); b.setTitulo("A biblia do C/C++"); // vamos exibir os dados do livro System.out.println("Id: " + b.getId()); System.out.println("Titulo: " + b.getTitulo()); // e mais um livro aqui Livro c = new Livro(); c.setTitulo("PHP + MySQL"); // vamos exibir os dados do livro System.out.println("Id: " + c.getId()); System.out.println("Titulo: " + c.getTitulo()); } } Ao executar esta aplicação teremos o seguinte resultado: Id: 1 Titulo: Programando em Java 2 Id: 2 Titulo: A biblia do C/C++ Id: 3 Titulo: PHP + MySQL Como podemos ver, a cada instância criada a variável id é incrementada em 1. Caso você não tenha entendido todo o processo, este incremento acontece no construtor da classe Livro. Veja: // vamos incrementar a variável estática Livro.id++; Nas situações em que as variáveis estáticas são públicas, podemos acessá-la usando o nome da classe seguida de um ponto. Assim, se a variável id fosse pública, poderíamos acessá-la de qualquer lugar de nossa aplicação da seguinte forma: System.out.println(Livro.id); |
PHP ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como usar funções e variáveis globais em PHPQuantidade de visualizações: 38255 vezes |
Por padrão, variáveis definidas a nível de página, ou seja, variáveis globais, não podem ser acessadas a partir de uma função. Veja um exemplo:<? // variável global $usuario = "Osmar"; function exibir(){ echo $usuario; // acessa a variável gloal } // chama a função exibir(); ?> Ao executar este exemplo teremos o seguinte resultado: Notice: Undefined variable: usuario in xxx/estudos.php on line 6 Para contornar este problema, temos que empregar a palavra-chave global seguida pelo nome da variável global que queremos acessar. Veja: <? // variável global $usuario = "Osmar"; function exibir(){ // permite acesso à variável global global $usuario; echo $usuario; // acessa a variável gloal } // chama a função exibir(); ?> Ao executarmos o código novamente, percebemos que o resultado é o esperado. Outra forma de acessar variáveis globais a partir de uma função é usando $GLOBALS. Veja: <? // variável global $usuario = "Osmar"; function exibir(){ echo $GLOBALS['usuario']; // acessa a variável global } // chama a função exibir(); ?> |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Como calcular a soma, o produto, a diferença e o quociente de dois números inteiros informados pelo usuárioQuantidade de visualizações: 975 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar dois número inteiros. Em seguida mostre a soma, o produto, a diferença e o quociente dois dois números informados. Sua saída deverá ser parecida com: Informe o primeiro número: 8 Informe o segundo número: 3 A soma dos números é: 11 O produto dos números é: 24 A diferença dos números é: 5 O quociente dos números é: 2.66667 Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String args[]){ // variáveis usadas na resolução do problema int n1, n2, soma, produto, diferenca; double quociente; // vamos ler os dois números Scanner leitura = new Scanner(System.in); System.out.print("Informe o primeiro número: "); n1 = Integer.parseInt(leitura.nextLine()); System.out.print("Informe o segundo número: "); n2 = Integer.parseInt(leitura.nextLine()); // vamos somar os dois números soma = n1 + n2; // vamos calcular o produto produto = n1 * n2; // vamos calcular a diferença diferenca = n1 - n2; // vamos calcular o quociente quociente = n1 / (n2 * 1.0); // vamos mostrar os resultados System.out.println("A soma dos números é: " + soma); System.out.println("O produto dos números é: " + produto); System.out.println("A diferenca dos números é: " + diferenca); System.out.println("O quociente dos números é: " + quociente); } } |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Active da classe TClientDataSet do DelphiQuantidade de visualizações: 11521 vezes |
A propriedade Active de um controle TClientDataSet pode ser definida em tempo de design (pelo Object Inspector) ou em tempo de execução. Se o valor for True os dados armazenados no TClientDataSet podem ser lidos e manipulados. Se o valor for False, o client dataset está fechado (closed) e não podemos acessar nem manipular os dados contidos nele. Veja no trecho de código abaixo como definir o valor da propriedade Active em tempo de execução: procedure TForm3.Button3Click(Sender: TObject); begin // vamos ativar o client dataset ClientDataSet1.Active := True; // vamos testar se o client dataset foi mesmo ativado if ClientDataSet1.Active then ShowMessage('O ClientDataSet está ativo') else ShowMessage('O ClientDataSet NÃO está ativo') end; Ao clicar no botão nós "ativamos" o client dataset e em seguida testamos o valor da propriedade Active para informar se o controle foi realmente ativado. É preciso ter muito cuidado. Tentar manipular os dados de um client dataset fechado pode resultar em uma exceção do tipo EDatabaseError com mensagens parecidas com: Project Projeto.exe raised exception class EDatabaseError with message 'ClientDataSet1: Cannot perform this operation on a closed dataset'. Ao definirmos o valor True para a propriedade Active as seguintes ações ocorrem: 1) O client dataset é preenchido com dados. Dependendo das propriedades do controle, estes dados podem vir de três formas diferentes: a) Do arquivo especificado na propriedade FileName; b) Do provider especificado na propriedade ProviderName ou por meio do método SetProvider. (algumas classes derivadas de TCustomClientDataSet possuem um componente interno que faz o papel do provider); c) Os dados que estavam ativos quando o client dataset foi desativado (somente se a aplicação foi executada durante um certo período depois que o dataset foi desativado). 2) O evento BeforeOpen é disparado. 3) O valor dsBrowse é atribuído à propriedade State do dataset. 4) Abre e posiciona um cursor no primeiro registro do conjunto de dados. 5) Dispara o evento AfterOpen. Se o client dataset nunca foi ativado, atribuir o valor True para a propriedade Active faz com que a estrutura (metadata) do client dataset seja definida. Esta estrutura é obtida juntamente com o pacote de dados a partir do provider ou armazenado em disco. Se não houver pacote de dados, tal estrutura é construída usando o valor atual da propriedade FieldDefs ou a partir dos componentes de campos persistentes listados na propriedade Fields. Se um erro ocorrer durante a abertura do dataset, seu estado (State) é definido como dsInactive e o cursor de navegação é fechado. Ao definirmos o valor False para a propriedade Active as seguintes ações ocorrem: 1) O evento BeforeClose é disparado. 2) O valor para a propriedade State é definido como dsInactive. 3) O cursor de navegação é fechado, salvando os dados atuais em disco se a propriedade FileName estiver definida e salvando o pacote de dados atual em cache de forma que o mesmo possa ser restaurado mais tarde quando o dataset for reaberto. 4) O evento AfterClose é disparado. Importante: Uma chamada ao método Open do TClientDataSet define a propriedade Active como True, enquanto uma chamada ao método Close a define como False. Esta dica foi escrita e testada no Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
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 |