Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como ler todo o conteúdo de um arquivo texto usando Delphi - As funções AssignFile(), ReadLn() e Eof() do DelphiQuantidade de visualizações: 31320 vezes |
Nesta dica mostro como usar o Delphi para ler todo o conteúdo de um arquivo texto. Esta leitura será feita linha a linha e adicionaremos cada linha a um TMemo à medida que ela for lida. O primeiro passo para se ler um arquivo texto usando Delphi é declarar uma variável do tipo TextFile. Em seguida usamos a procedure AssignFile() para associar a variável TextFile ao arquivo em disco. Como queremos ler o conteúdo do arquivo, a função Reset() deve ser usada. Esta função abre o arquivo texto fornecido e posiciona o cursor de leitura no início do arquivo. A partir daí podemos usar um laço while e a função ReadLn() para ler cada linha do arquivo. Note o uso da função Eof() para testarmos se o ponteiro de leitura ainda não atingiu o fim do arquivo. Veja o exemplo para um melhor entendimento: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var arquivo: TextFile; linha: String; begin // vamos fazer uma ligação entre a variável arquivo e o // arquivo que queremos ler AssignFile(arquivo, 'C:\arquivo de codigos\dados.txt'); // vamos abrir o arquivo em modo leitura Reset(arquivo); // vamos ler cada linha e adicioná-la a um Memo while not Eof(arquivo) do begin ReadLn(arquivo, linha); Memo1.Lines.Add(linha); end; // hora de fechar o arquivo CloseFile(arquivo); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
![]() |
Delphi ::: Dicas & Truques ::: Data e Hora |
Como obter a quantidade de dias para um determinado ano usando a função DaysInAYear() do DelphiQuantidade de visualizações: 11468 vezes |
Quando estamos trabalhando com datas, geralmente precisamos saber a quantidade de dias que um determinado ano possui, ou seja, alguns anos possuem 365 dias, outros possuem 366. A unit DateUtils possui uma função chamada DaysInAYear() que serve para este propósito. Ela aceita um inteiro representando o ano desejado e retorna um inteiro representando a quantidade de dias que tal ano possui. Veja o exemplo:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var ano, dias_ano: Integer; begin ano := 2010; // vamos obter a quantidade de dias para o // ano de 2010 dias_ano := DaysInAYear(ano); // exibe o resultado ShowMessage('O ano informado contém ' + IntToStr(dias_ano) + ' dias'); end; Este trecho de código nos informará que o ano de 2010 possui 365 dias. Note que o argumento para a função DaysInAYear() deve estar entre 1 e 9999 (inclusive). Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Aplicativos e Outros |
Como calcular a distância entre dois pontos na terra em DelphiQuantidade de visualizações: 1340 vezes |
Nesta dica mostrarei como calcular a distância em quilômetros entre dois pontos na terra dadas suas latitudes e longitudes. Neste exemplo eu coloquei o valor de 6378.137 para o raio da terra, mas você pode definir para o valor que achar mais adequado. O cálculo usado neste código se baseia na Fórmula de Haversine, que determina a distância do grande círculo entre dois pontos em uma esfera, dadas suas longitudes e latitudes. Veja o código Delphi completo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // função que recebe dois pontos na terra e retorna a distância // entre eles em quilômetros function CalcularDistancia(lat1: double; lat2: double; lon1: double; lon2: double): double; var raio_terra, dlon, dlat, a, c: double; begin raio_terra := 6378.137; // raio da terra em quilômetros // o primeiro passo é converter as latitudes e longitudes // para radianos // não esqueça de adicionar a unit Math lon1 := DegToRad(lon1); lon2 := DegToRad(lon2); lat1 := DegToRad(lat1); lat2 := DegToRad(lat2); // agora aplicamos a Fórmula de Haversine dlon := lon2 - lon1; dlat := lat2 - lat1; a := Power(Sin(dlat / 2), 2) + Cos(lat1) * Cos(lat2) * Power(Sin(dlon / 2),2); c := 2 * ArcSin(Sqrt(a)); // e retornamos a distância Result := (c * raio_terra); end; procedure TForm5.Button1Click(Sender: TObject); var lat1, lon1, lat2, lon2, distancia: double; begin // obtém as coordenadas vindas dos campos de texto lat1 := StrToFloat(txtPrimeiraLatitude.Text); lon1 := StrToFloat(txtPrimeiraLongitude.Text); lat2 := StrToFloat(txtSegundaLatitude.Text); lon2 := StrToFloat(txtSegundaLongitude.Text); // vamos calcular a distância entre os dois pontos em Kms distancia := CalcularDistancia(lat1, lat2, lon1, lon2); // e mostramos o resultado txtDistancia.Text := FormatFloat('#.0', distancia) + ' kms'; end; Ao executar este código Delphi nós teremos o seguinte resultado: Informe a primeira latitude: -16,674551 Informe a primeira longitude: -49,303598 Informe a segunda latitude: -15,579321 Informe a segunda longitude: -56,10009 A distância entre os dois pontos é: 736,9 kms Aqui as informações sobre as latitudes e longitudes vieram de campos de texto TEdit, e o código foi disparado a partir do clique de um botão TButton. Neste exemplo eu calculei a distância entre as cidades de Goiânia-GO e Cuiabá-MT. A latitude é a distância ao Equador medida ao longo do meridiano de Greenwich. Esta distância mede-se em graus, podendo variar entre 0o e 90o para Norte(N) ou para Sul(S). A longitude é a distância ao meridiano de Greenwich medida ao longo do Equador. |
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como obter o índice do item selecionado em uma ListBox do Delphi usando a propriedade ItemIndex da classe TListBoxQuantidade de visualizações: 14996 vezes |
Muitas vezes precisamos saber o índice do item atualmente selecionado em uma ListBox. Para isso podemos obter o valor da propriedade ItemIndex. Esta propriedade retorna um valor inteiro correspondente ao índice do item selecionado. O primeiro item da lista possui o índice 0. Se nenhum item estiver selecionado, ItemIndex retorna -1. Veja o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice do item selecionado na ListBox indice := ListBox1.ItemIndex; // mostra o resultado ShowMessage('O índice do item selecionado é: ' + IntToStr(indice)); end; Note que esta propriedade não se aplica às ListBoxes de seleção múltipla. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: VCL - Visual Component Library ::: TEdit |
Como obter o conteúdo de um TEdit do Delphi em tempo de execução usando a função SendMessage() da API do Windows e a mensagem WM_GETTEXTQuantidade de visualizações: 11876 vezes |
Embora o Delphi já nos forneça as ferramentas necessárias para obter o conteúdo de 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 SendMessage() em combinação com a mensagem WM_GETTEXT. A função SendMessage() da API do Windows possui a seguinte assinatura em C/C++: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // Protótipo {$EXTERNALSYM SendMessage} function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; // Implementação function SendMessage; external user32 name 'SendMessageW'; Note que precisamos de um HWND (parâmetro hWnd) para a caixa de texto. Temos que fornecer também a quantidade de caracteres que serão lidos (parâmetro wParam) e um buffer no qual os caracteres lidos a partir da caixa de texto serão colocados (parâmetro lParam). Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var buffer: String; tamanho: Integer; begin // vamos obter a quantidade de caracteres na caixa de texto tamanho := SendMessage(Edit1.Handle, WM_GETTEXTLENGTH, 0, 0); // vamos ajustar o tamanho do buffer SetLength(buffer, tamanho); // vamos usar a mensagem WM_GETTEXT para obter o conteúdo // da caixa de texto SendMessage(Edit1.Handle, WM_GETTEXT, tamanho + 1, lParam(@buffer[1])); // vamos exibir o resultado ShowMessage('O conteúdo do edit é: ' + buffer); end; Veja que usei também a mensagem WM_GETTEXTLENGTH para obter a quantidade de caracteres na caixa de texto. Isso foi necessário para redimensionarmos o buffer de caracteres para um tamanho capaz de acomododar todo o conteúdo do edit. |
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Como gerar um número aleatório de 0 a 10 em Delphi usando a função Random()Quantidade de visualizações: 28041 vezes |
Em algumas situações precisamos gerar números randômicos. Em Delphi isso pode ser feito com o auxílio da função Random(). Esta função aceita um valor inteiro e retorna um número aleatório maior ou igual a 0 e menor que o valor fornecido. Assim, se quisermos obter um número randômico na faixa de 0 a 10, só precisamos fornecer o valor 11 para a função Random(). Note ainda a chamada à função Randomize(), usada para iniciar o gerador de números randômicos. Veja um exemplo no qual geramos um número aleatório na faixa de 0 a 10: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var numero: integer; begin // vamos iniciar o gerador de números randômicos Randomize; // vamos gerar um número aleatório entre 0 e 10 numero := Random(11); // exibe o resultado ShowMessage('Número gerado: ' + IntToStr(numero)); end; Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Data e Hora |
Como retornar a data e hora atual em Delphi usando as funções Now() e DateTimeToStr()Quantidade de visualizações: 23503 vezes |
Em algumas situações precisamos obter a data e hora atual do sistema. Em Delphi isso pode ser feito com o auxílio da função Now(), presente na unit SysUtils. Este função não requer nenhum argumento e retorna a data e hora atual como um TDateTime. Veja o exemplo:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var data: TDateTime; begin // vamos obter a data e hora atual data := Now(); // vamos exibir o resultado ShowMessage(DateTimeToStr(data)); end; Ao executar este código Delphi nós teremos o seguinte resultado: 28/09/2018 15:14:15 Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Bilbiotecas Estáticas (obj) e Dinâmicas (DLLs) |
Apostila Delphi para iniciantes - Como criar sua primeira DLL usando DelphiQuantidade de visualizações: 18783 vezes |
Em dicas anteriores você aprendeu o que é um DLL e sua importância para a programação no ambiente Windows. Nesta dica mostrarei como criar uma DLL bem simples e usá-la a partir de um programa Delphi. Para isso siga atentamente os passos abaixo: 1) Vá em File -> New -> Other; 2) Selecione Delphi Projects e escolha DLL Wizard; 3) Neste momento o DLL Wizard criará o esqueleto do código fonte da DLL. Note que o código desta unit é bem parecido com aquele da unit de uma aplicação. A diferença principal é o uso da palavra-chave library em vez de program: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- library Project2; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses SysUtils, Classes; {$R *.res} begin end. Salve esta unit como MinhaDLL.dproj em um diretório de sua preferência. Em seguida vamos criar uma rotina que receberá dois valores inteiros e retornará sua soma. Veja a modificação no código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- library MinhaDLL; function Somar(a, b: Integer): Integer; stdcall; begin Result := a + b; // retorna a soma end; { vamos exportar (export) a função Somar } exports Somar; begin end. Nossa DLL está pronta. Agora vá no menu Project -> Build MinhaDLL (ou pressione Shift+F9). Se tudo correu bem você terá um arquivo chamado MinhaDLL.dll no diretório no qual você salvou o projeto. O próximo passo é aprender a carregar esta DLL a partir de seus programas Delphi. Veja mais dicas nesta seção para aprender como isso é feito. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como definir ou retornar a cor de fundo de uma determinada coluna do TDBGrid do DelphiQuantidade de visualizações: 9279 vezes |
Em algumas situações gostaríamos de definir a cor de fundo de uma determinada coluna do DBGrid. Isso pode ser feito por meio da propriedade Color da classe TColumn. Em tempo de design a cor de fundo de um coluna pode ser definida clicando-se com o botão direito do DBGrid e escolhendo a opção Columns Editor. Em seguida clique na coluna desejada e ajuste sua propriedade Color no Object Inspector. Em tempo de execução podemos definir a cor de fundo para uma coluna usando o seguinte trecho de código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); begin // vamos definir a cor de fundo para a primeira coluna DBGrid1.Columns[0].Color := Graphics.clYellow; end; Veja que eu defini a cor de fundo como sendo uma das constantes definidas na unit Graphics. Lembre-se de que também podemos fornecer um valor RGB. Veja agora um trecho de código que mostra como obter a cor de fundo da coluna: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); begin // vamos obter a cor de fundo da primeira coluna ShowMessage('A cor de fundo da coluna é: ' + ColorToString(DBGrid1.Columns[0].Color)); end; Ao executarmos este código temos uma mensagem parecida com: "A cor de fundo da coluna é: clSilver". Esta dica foi escrita e testada no Delphi 2009. |
Vamos testar seus conhecimentos em JavaScript |
Um arquivo JavaScript externo precisa, obrigatoriamente, conter a tag <script> A) Verdadeiro B) Falso Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
A Bacia Platina é uma das principais bacias do país. Em relação às suas características, marque a alternativa correta. A) É formada pelas bacias dos rios Paraná, Paraguai, Araguaia e Tocantins. B) Está localizada no Brasil, Argentina, Chile e Paraguai. C) Possui a maior usina hidrelétrica totalmente brasileira. D) Apresenta baixo aproveitamento econômico de sua área. E) É a bacia brasileira com maior capacidade instalada de geração de energia. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
O código abaixo é válido em Python?nome1 = "ALBERTO" nome2 = 'FERNANDA' print(nome1) print(nome2) A) Sim B) Não Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações diretas ou rasas As fundações rasas ou diretas apresentam como características a transmissão da carga ao terreno, predominantemente pelas pressões distribuídas sob a base da fundação, e a profundidade de assentamento em relação ao terreno inferior a duas vezes a menor dimensão da fundação. Sobre as fundações superficiais rasas ou diretas, assinale a alternativa correta. A) A sapata associada pode ser definida como a sapata sujeita à ação de uma carga distribuída linearmente ou de pilares ao longo de um mesmo alinhamento. B) O radier é o elemento de fundação superficial que abrange parte ou todos os pilares de uma estrutura, distribuindo os carregamentos. C) A sapata corrida é definida como a sapata comum a mais de um pilar. Devido a essa particularidade, para sua execução é necessário o uso de máquinas. D) A sapata é dimensionada de modo que as tensões de tração nela resultantes sejam resistidas pelo concreto, sem necessidade de armadura. E) O bloco é dimensionado de modo que as tensões de tração nele resultantes sejam resistidas pelo emprego de armadura disposta para esse fim. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em AutoCAD Civil 3D |
Superfícies no AutoCAD Civil 3D Qual dos objetos abaixo não é um tipo de dados que pode ser incluído em uma superfície do AutoCAD Civil 3D? A) Lines (Linhas) B) Points (Pontos) C) Parcels (Parcelas, Lotes) D) Blocks (Blocos) 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 - Como testar o conteúdo no final de uma string usando Java - O método endsWith() da classe String |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |