Você está aqui: Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir todas as ocorrências de uma substring em uma string em Delphi sem considerar maiúsculas e minúsculas usando a função ReplaceText()Quantidade de visualizações: 11786 vezes |
Algumas vezes precisamos substituir todas as ocorrências de uma substring em uma string mas não queremos diferenciar letras maiúsculas de letras minúsculas. Em Delphi isso pode ser feito com o auxílio da função ReplaceText(). Esta função requer a string na qual a substituição ocorrerá, a substring a ser substituída e a nova substring. O resultado será uma nova string resultante da substituição. Veja o exemplo:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var frase: string; begin frase := 'PHP? Sim, eu gosto muito de PHP'; // vamos substituir todas as ocorrências de "PHP" por "Delphi' // sem considerar maiúsculas e minúsculas frase := ReplaceText(frase, 'Php', 'Delphi'); // vamos exibir o resultado ShowMessage(frase); end; Lembre-se de que esta função não diferencia maiúsculas e minúsculas. Não se esqueça de adicionar a unit StrUtils no uses do seu formulário. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
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 retornar uma lista dos dispositivos de saída MIDI no sistema usando DelphiQuantidade de visualizações: 11144 vezes |
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de saída MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito. O primeiro passo é declarar uma variável do tipo TMidiOutCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIOUTCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade. O passo seguinte é obter a quantidade de dispositivos de saída MIDI. Isso é feito com uma chamada à função midiOutGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiOutGetDevCaps(), também da API do Windows: midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps)); Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiOutCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiOutCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, tipo do dispositivo MIDI, número de vozes suportadas, número máximo de notas que podem ser tocadas simultaneamente, etc. Para finalizar, nós acessamos o campo szPname do registro MidiOutCaps e o adicionamos no ComboBox. Veja o código completo a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); var i: Integer; MidiOutCaps: TMidiOutCaps; // este registro (record) está definido em MMSystem.pas erro: Word; begin // uses MMSystem ComboBox2.Clear; // midiOutGetNumDevs retorna a quantidade de dispositivos de saída MIDI no sistema for i := 0 to midiOutGetNumDevs - 1 do begin // vamos obter o dispositivo identificado pela variável i (uDeviceID) erro := midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps)); if erro <> MMSYSERR_NOERROR then raise Exception.Create('Não foi possível obter a lista de dispositivos ' + 'de saída MIDI'); // vamos adicionar o nome do dispositivo no ComboBox ComboBox2.Items.Add(StrPas(MidiOutCaps.szPname)); end; end; Ao executar este código o ComboBox será preenchido com valores semelhantes à: Microsoft GS Wavetable SW Synth MPU-401 Nas demais dicas relacionadas a este assunto você deverá sempre indicar o dispositivo de saída MIDI. Geralmente você poderá fornecer os valores 0 ou 1 para as funções MIDI que pedem o ID do dispositivo de saída. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Delphi para iniciantes - Como escrever uma função que retorna uma matriz de IntegerQuantidade de visualizações: 13501 vezes |
Em algumas situações precisamos retornar uma matriz a partir de uma função. Nesta dica eu mostro como isso pode ser feito. O primeiro passo é declarar um novo tipo. Veja:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- type // vamos declarar um novo tipo TMatrizInteiros = array of Integer; Aqui o tipo TMatrizInteiros representa uma matriz de inteiros. Veja a unit completa para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type // vamos declarar um novo tipo TMatrizInteiros = array of Integer; var Form1: TForm1; implementation {$R *.dfm} // função usada para construir e retornar uma // matriz de Integer function obterValores: TMatrizInteiros; var tempArray: TMatrizInteiros; i: integer; begin // vamos definir o tamanho da matriz SetLength(tempArray, 10); // vamos inicializar a matriz com os números pares de 0 até 18 // note que em matrizes abertas o índice inicial é sempre 0 for i := Low(tempArray) to High(tempArray) do begin tempArray[i] := i * 2; end; Result := tempArray; // vamos retornar a matriz end; procedure TForm1.Button1Click(Sender: TObject); var valores: TMatrizInteiros; // uma matriz do tipo TMatrizInteiros i: Integer; begin valores := obterValores(); // que já temos a matriz, vamos exibir os valores de // seus elementos for i := 0 to High(valores) do begin Memo1.Lines.Add(IntToStr(valores[i])); end; end; end. Note que a função retornará uma matriz aberta (open array). Desta forma, seu índice inicial será sempre 0. |
Delphi ::: VCL - Visual Component Library ::: TEdit |
Como habilitar ou desabilitar um TEdit do Delphi usando a função EnableWindow() da API do WindowsQuantidade de visualizações: 11556 vezes |
Embora o Delphi já nos forneça as ferramentas necessárias para habilitar ou desabilitar um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função EnableWindow() com os valores true ou false. A função EnableWindow() possui a seguinte assinatura em C/C++: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- BOOL EnableWindow( HWND hWnd, BOOL bEnable ); No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // Protótipo {$EXTERNALSYM EnableWindow} function EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL; stdcall; // Implementação function EnableWindow; external user32 name 'EnableWindow'; Note que precisamos informar o HWND (parâmetro hWnd) para a caixa de texto e um valor BOOL. Se fornecermos false, a caixa de texto será desabilitada. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos desabilitar o TEdit usando a função EnableWindow() // com o valor false if EnableWindow(Edit1.Handle, False) = True then begin ShowMessage('A caixa de texto foi desabilitada com sucesso.'); end; end; Para habilitar a caixa de texto novamente, só precisamos fornecer o valor true para o parâmetro bEnable: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos habilitar o TEdit usando a função EnableWindow() // com o valor true if EnableWindow(Edit1.Handle, True) = True then begin ShowMessage('A caixa de texto foi habilitada com sucesso.'); end; end; É importante observar que o retorno da função EnableWindow será False se tentarmos habilitar uma caixa de texto que já está habilitada ou tentarmos desabilitar uma caixa de texto que já está desabilitada. |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais Uma das formas de produzir energia elétrica é por meio da energia nuclear. A energia nuclear frequentemente é contestada por apresentar dois grandes problemas: a geração de lixo nuclear, de difícil descarte; e a fragilidade estrutural dos reatores nucleares. Quanto ao segundo ponto, é necessário construir uma estrutura no entorno dos reatores que seja capaz de absorver, inclusive, o impacto de uma bomba (em caso de guerra). Uma bomba é um caso de que tipo de ação? A) Permanente direta. B) Excepcional. C) Acidental indireta. D) Acidental direta. E) Permanente indireta. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Ética profissional, social, política Se a maior preocupação de Maquiavel é o Estado, poderíamos dizer que isso o situa no presente temporal. A respeito disto, afirma Sadek (1995, p. 17): "De fato, sua preocupação em todas as suas obras é o Estado. Não o melhor Estado, aquele tantas vezes imaginado, mas que nunca existiu. Mas o Estado real, capaz de impor a ordem". A partir do trecho citado, assinale a alternativa correta: A) Para Maquiavel, o tempo presente do Estado deve ser considerado pela ética. B) Para Maquiavel, a ética está associada ao exercício da ordem. C) Para Maquiavel, a ética está atrelada a uma idealização da ação na política. D) Para Maquiavel, a ordem é fruto de um Estado ético. E) Para Maquiavel, o Estado existe enquanto mantenedor da ética. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Perda de carga Perda de carga é a energia dissipada em forma de calor devido ao atrito e à viscosidade em uma canalização. Nesse sentido, a perda de carga unitária em um tubo de 50mm de diâmetro, coeficiente de atrito de 0,031 e comprimento de 100m, sendo que a água escoa com vazão de 0,01 m3/s, é de: A) 0,47m/m. B) 0,52m/m. C) 0,74m/m. D) 0,82m/m. E) 0,94m/m. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Analise o seguinte código JavaScriptconst verdadeiro = true == []; const falso = true == ![]; document.write(verdadeiro + falso); Qual o resultado de sua execução? A) "true" B) 1 C) false D) 0 E) "false" Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Analise o seguinte código JavaScriptvar a = new Array(1, 2, 3); for (var i in a) { window.alert("a[i] = " + a[i]); } Quantas vezes o diálogo alert será exibido? A) 3 vezes (uma vez para cada elemento do array). B) 4 vezes (uma vez para cada elemento e um alert adicional para a propriedade length do array). C) 3 ou 4 vezes, dependendo do navegador. D) O laço for...in não existe em JavaScript e vai provocar um erro. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Java - Padrões de projeto para iniciantes - Como usar o padrão de projeto Singleton em suas aplicações Java C++ - C++ Windows API GUI - Como criar sua primeira aplicação de interface gráfica usando C++ e WinAPI |
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 |