Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios

Usando a função ForceDirectories() para criar um diretório juntamente com um ou mais subdiretórios

Quantidade de visualizações: 18376 vezes
Em algumas situações precisamos, de uma só vez, criar um diretório e, dentro deste diretório, criar outro subdiretório. Para isso, o Delphi nos fornece a função ForceDirectories(), presente na unit SysUtils. Esta função recebe uma string contendo o diretório e subdiretórios a serem criados e returna true se a operação foi efetuada com sucesso e false em caso contrário.

Veja um trecho de código no qual criamos um diretório contendo um subdiretório que, por sua vez, contém outro subdiretório:

----------------------------------------------------------------------
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
  diretorio: string;
begin
  // diretório e subdiretorios que queremos criar
  diretorio := 'C:\arquivo de codigos\delphi\exemplos';

  // vamos criar o diretório e subdiretórios
  if ForceDirectories(diretorio) then
    ShowMessage('O diretório e subdiretórios foram criados.')
  else
    ShowMessage('O diretório e subdiretórios NÃO foram criados.')
end;

Note que a unit FileCtrl também contém uma função chamada ForceDirectories(). Porém, esta função foi considerada ultrapassada. Dê preferência àquela da unit SysUtils.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

Link para compartilhar na Internet ou com seus amigos:

Delphi ::: VCL - Visual Component Library ::: TListBox

Como adicionar itens em uma ListBox do Delphi usando a função Add()

Quantidade de visualizações: 14167 vezes
Itens em uma TListBox podem ser adicionados usando-se o método Add() da propriedade Items, um objeto da classe TString. Este método aceita uma string representando o novo ítem e retorna um inteiro cujo valor é o índice do novo ítem. Veja o seguinte trecho de código:

----------------------------------------------------------------------
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
  item: String;
begin
  // vamos adicionar um item vindo de uma variável
  item := 'Sou o primeiro item';
  ListBox1.Items.Add(item);

  // vamos adicionar outro item...desta vez um literal
  ListBox1.Items.Add('Sou o segundo item');
end;

Note que neste exemplo não fizemos uso do valor inteiro retornado pelo método Add(). Caso isso seja necessário, podemos usar código parecido com:

----------------------------------------------------------------------
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
  item: String;
  indice: Integer;
begin
  // vamos adicionar um item vindo de uma variável
  // e obter o seu índice
  item := 'Sou o primeiro item';
  indice := ListBox1.Items.Add(item);

  ShowMessage('O novo ítem foi inserido no índice: ' +
    IntToStr(indice));
end;

É importante notar que, em uma TListBox não ordenada, ou seja, o valor de sua propriedade Sorted é false, o método Add() sempre adicionará o novo item no final da lista. Em uma lista ordenada, o item é inserido em uma posição determinada pela ordenação alfabética dos demais itens.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: VCL - Visual Component Library ::: TEdit

Como obter a quantidade de caracteres no texto de um TEdit do Delphi usando a função SendMessage() da API do Windows e a mensagem WM_GETTEXTLENGTH

Quantidade de visualizações: 10936 vezes
Em algumas ocasiões gostaríamos de obter o tamanho do texto de um TEdit usando apenas as funções da API do Windows. Para isso podemos usar a função SendMessage() em combinação com a mensagem WM_GETTEXTLENGTH.

A função SendMessage() da API do Windows 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)
----------------------------------------------------------------------

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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// Protótipo
{$EXTERNALSYM SendMessage}
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; 
  lParam: LPARAM): LRESULT; stdcall;

// Implementação
function SendMessage; external user32 name 'SendMessageW';

Quando usamos a mensagem WM_GETTEXTLENGTH para obter a quantidade de caracteres no texto de um TEdit, o retorno da função SendMessage() é um valor inteiro contendo a quantidade de caracteres na caixa de texto. Os parâmetros wParam e lParam não são usados, ou seja, podemos fornecer o valor 0 para os mesmos. 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);
var
  tamanho: Integer;
begin
  // vamos obter a quantidade de caracteres na caixa de texto
  tamanho := SendMessage(Edit1.Handle, WM_GETTEXTLENGTH, 0, 0);

  // vamos exibir o resultado
  ShowMessage('O edit contém ' + IntToStr(tamanho) + ' caracteres.');
end;

Ao executar este exemplo teremos uma mensagem com um conteúdo parecido com:

O edit contém 10 caracteres.


Delphi ::: VCL - Visual Component Library ::: TListBox

Como usar um laço for para pesquisar valores nos itens de uma ListBox do Delphi

Quantidade de visualizações: 12583 vezes
Nesta dica mostro como é possível pesquisar valores nos itens de uma ListBox. Note que, se o valor pesquisado for encontrado, nós o selecionamos na lista e informamos seu índice. Se não for encontrado nós ajustamos uma variável Boolean e avisamos do não sucesso da operação. Finalmente note que este código faz diferenciação de letras maiúsculas e minúsculas, ou seja, Osmar será diferente de OSMAR. Veja o código:

----------------------------------------------------------------------
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;
  pesquisa: string;
  encontrou: Boolean;
begin
  // vamos solicitar o texto a ser pesquisado na ListBox
  pesquisa := InputBox('Pesquisar', 'Informe o texto', '');
  encontrou := false;

  // vamos usar um laço for para percorrer todos os itens
  // da ListBox
  for i := 0 to ListBox1.Count - 1 do
    begin
      if ListBox1.Items[i] = pesquisa then
        begin
          encontrou := true;
          // vamos selecionar o item encontrado
          ListBox1.ItemIndex := i;
          ShowMessage('O texto pesquisado foi encontrado ' +
            'no índice ' + IntToStr(ListBox1.ItemIndex));
        end;
    end;

    // não foi encontrado?
    if not encontrou then
      begin
        ShowMessage('O texto pesquisado não foi encontrado.');
      end;
end;

Para fins de compatibilidade, esta dica foi escrita usando 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

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware 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 funcionalidadesControle 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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 53 usuários muito felizes estudando em nosso site.