C++ ::: Win32 API (Windows API) ::: Arquivos e Diretórios

Como renomear arquivos e diretórios em C++ usando a função MoveFile() da API do Windows

Quantidade de visualizações: 8779 vezes
A função MoveFile() da API do Windows pode ser usada quando precisamos renomear um arquivo ou diretório. Veja seu protótipo:

BOOL WINAPI MoveFile(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName
);


Note que só precisamos fornecer o nome atual e o novo nome do arquivo ou diretório que queremos renomear. Se houver algum erro ao renomear o arquivo ou diretório, a função MoveFile() retornará o valor 0 (zero). Se a operação for efetuada com sucesso, um valor diferente de 0 (zero) será retornado. É sempre uma boa idéia usar a função GetLastError() para retornar o código do erro em caso de falha.

Veja um trecho de código no qual renomeamos um arquivo:

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // nome atual do arquivo
  CHAR nome_atual[] = "C:\\testes.txt";
  // novo nome do arquivo
  CHAR nome_novo[] = "C:\\novo.txt";
  
  // vamos renomear o arquivo
  if(MoveFile(nome_atual, nome_novo)){
    cout << "Arquivo renomeado com sucesso." << endl;                      
  }
  else{
    cout << "Erro ao renomear o arquivo: " << 
      GetLastError() << endl;     
  }
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

Aqui nós estamos alterando o nome do arquivo testes.txt para novo.txt. Os possíveis erros nesta operação são:

a) ERROR_FILE_NOT_FOUND - Ocorre quando o arquivo fornecido como primeiro argumento para a função MoveFile() não existe. O código para este erro é 2 e a mensagem em português é "O sistema não pode encontrar o arquivo especificado (The system cannot find the file specified)".

b) ERROR_ALREADY_EXISTS - Ocorre quando o arquivo fornecido como segundo argumento para a função MoveFile() já existe. O código para este erro é 183 e a mensagem em português é "Não é possível criar um arquivo já existente (Cannot create a file when that file already exists)".

Veja agora um trecho de código no qual renomeamos um diretório:

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[]){
  // nome atual do diretório
  CHAR nome_atual[] = "C:\\imagens";
  // novo nome do diretório
  CHAR nome_novo[] = "C:\\imagens2";
  
  // vamos renomear o diretório
  if(MoveFile(nome_atual, nome_novo)){
    cout << "Diretório renomeado com sucesso." << endl;                      
  }
  else{
    cout << "Erro ao renomear o diretório: " << 
      GetLastError() << endl;     
  }
  
  system("PAUSE");
  return EXIT_SUCCESS;
}



Java ::: Dicas & Truques ::: Arquivos e Diretórios

Como listar todo o conteúdo de um diretório usando a função listFiles() da classe File do Java

Quantidade de visualizações: 130 vezes
Nesta dica mostrarei como podemos usar o método listFiles() da classe File da linguagem Java para listar todo o conteúdo de um diretório. Note que usei os métodos isFile() e isDirectory(), também da classe File, para indicar se o item que está sendo lido é um arquivo ou diretório.

Veja o código completo para o exemplo:

package arquivodecodigos;

import java.io.*;
 
public class Estudos{
  public static void main(String[] args){
    // nome e caminho do diretório     
    File diretorio = new File("C:\\estudos_c"); 
    // um vetor de arquivos
    File[] arquivos = diretorio.listFiles(); 
   
    // foram encontrados arquivos ou diretórios?
    if(arquivos != null){ 
      // obtemos a quantidade de arquivos
      int length = arquivos.length; 
   
      // e percorremos os arquivos individualmente
      for(int i = 0; i < length; ++i){ 
        File f = arquivos[i]; 
             
        // é um arquivo?
        if(f.isFile()){ 
          System.out.println(f.getName()); 
        } 
        else if(f.isDirectory()){ // é um diretório 
          System.out.println("Diretorio: " + f.getName()); 
        } 
      } 
    }     
  }
}

Ao executar este código Java nós teremos um resultado parecido com:

DICA.txt
Diretorio: estudos
Estudos_C.dev
Estudos_C.exe
Estudos_C.layout
main.c
main.o
Makefile.win


C# ::: Coleções (Collections) ::: ArrayList

Como criar um ArrayList de inteiros no C# e percorrer os elementos usando o laço foreach

Quantidade de visualizações: 12904 vezes
Nesta dica mostrarei um código C# direcionado aos programadores que querem aprender a usar a classe ArrayList em seus programas. Trata-se da criação de uma ArrayList de números inteiros.

Depois de criada a lista nós vamos adicionar alguns elementos e depois vamos usar o laço foreach para exibir os valores adicionados.

Veja o código completo:

using System;
using System.Collections;

namespace Estudos {
  class Principal {
    static void Main(string[] args) {
      // Cria o ArrayList
      ArrayList lista = new ArrayList();

      // Adiciona 5 inteiros
      lista.Add(30);
      lista.Add(2);
      lista.Add(98);
      lista.Add(1);
      lista.Add(7);

      // Percorre os elementos da ArrayList
      Console.WriteLine("Os elementos no ArrayList são:\n");
      foreach (int valor in lista) {
        Console.Write("{0} ", valor);
      }

      Console.WriteLine("\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Os elementos no ArrayList são:

30 2 98 1 7


Java ::: Coleções (Collections) ::: ArrayList

Java Collections para iniciantes - Arrays (vetores) ou a ArrayList? Qual devo usar?

Quantidade de visualizações: 16269 vezes
Uma das perguntas mais frequentes que os usuários do nosso site nos fazem é aquela sobre o uso de simples arrays (vetores e matrizes) ou objetos da classe ArrayList. Se o número de elementos for fixo ou você precisar de muita eficiência ao lidar com tipos primitivos, então arrays podem ser a melhor escolha.

Porém, muitos problemas envolvendo o armazenamento de dados requerem estruturas de dados que possam ser redimensionadas de acordo com a necessidade do algorítmo. Neste caso, uma ArrayList (ou qualquer uma das outras classes Collections) pode ser a escolha certa.

Veja um trecho de código para ficar mais fácil o entendimento:

package arquivodecodigos;
 
public class Estudos{
  public static void main(String args[]){
    int valores[] = {4, 12, 8, 5, 13};
    System.out.println("Primeiro elemento no vetor: " 
      + valores[0]);
  }
}

Ao executar este código nós teremos o seguinte resultado:

Primeiro elemento no vetor: 4

Como podemos ver neste exemplo, um array (nesse caso um vetor) possui um tamanho fixo, ou seja, o compilador não nos permite reduzir ou aumentar a quantidade de elementos em um vetor ou matriz criado a partir da notação de arrays. Assim, apesar de todas as facilidades que os arrays trazem consigo, este pode ser um empecilho para o tipo de aplicação que queremos desenvolver em um determinado momento.

A classe ArrayList, por outro lado, possui tamanho variado. Isso quer dizer que seu tamanho é aumentado ou reduzido de acordo com as necessidades do seu código.

Uma outra questão que diferencia arrays de ArrayList, é que não podemos armazenar tipos primitivos em um objeto da classe ArrayList. Se precisarmos fazer isso, o tipo primitivo deve ser colocado em uma classe encapsuladora, por exemplo, a classe Integer. Em algumas situações o compilador faz isso nos bastidores, e esta operação é chamada de auto-boxing.


Delphi ::: Dicas & Truques ::: Aplicativos e Outros

Como calcular a distância entre dois pontos na terra em Delphi

Quantidade de visualizações: 1463 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:

// 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.


C# ::: Dicas & Truques ::: Data e Hora

Como retornar o dia do mês da data atual em C# usando a propriedade Day da classe DateTime

Quantidade de visualizações: 7 vezes
Em algumas situações nós precisamos obter o dia do mês de uma determinada data em C#. Para isso nós podemos acessar a propriedade Day da estrutura DateTime.

Veja em seguida um trecho de código no qual mostramos o dia do mês da data atual:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      // vamos obter a data e hora atual
      DateTime agora = DateTime.Now;

      // agora vamos obter o dia da data
      int dia = agora.Day;

      // e mostramos o resultado
      Console.WriteLine("O dia do mês é: {0:D}", dia);

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

O dia do mês é: 16


LISP ::: Desafios e Lista de Exercícios Resolvidos ::: Lisp Básico

Exercícios Resolvidos de Lisp - Como calcular a soma, o produto, a diferença e o quociente de dois números inteiros informados pelo usuário

Quantidade de visualizações: 1083 vezes
Pergunta/Tarefa:

Escreva um programa Common Lisp 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
Resposta/Solução:

Veja a resolução comentada deste exercício usando Common Lisp:

; Este é o programa principal
(defun Exercicio()
  ; Variáveis usadas na resolução do problema
  (let ((n1)(n2)(soma)(produto)
    (diferenca)(quociente))
    ; Vamos ler os dois números
    (princ "Informe o primeiro número: ")
    ; talvez o seu compilador não precise disso
    (force-output)
    ; atribui o valor lido à variável n1
    (setq n1 (read))
    (princ "Informe o segundo número: ")
    ; talvez o seu compilador não precise disso
    (force-output)
    ; atribui o valor lido à variável n2
    (setq n2 (read))
  
    ; vamos somar os dois números
    (setq soma (+ n1 n2))
    ; vamos calcular o produto
    (setq produto (* n1 n2))
    ; vamos calcular a diferença
    (setq diferenca (- n1 n2))
    ; vamos calcular o quociente
    (setq quociente (/ n1 (* n2 1.0)))
  
    ; E mostramos o resultado
    (format t "A soma dos números é ~D" soma)
    (format t "~%O produto dos números é ~D" produto)
    (format t "~%A diferença dos números é ~D" diferenca)
    (format t "~%O quociente dos números é ~F" quociente)	
  )
)

; Auto-executa a função Exercicio()
(Exercicio)



C# ::: Dicas & Truques ::: Strings e Caracteres

Como converter uma string em um array de char em C# usando a função ToCharArray()

Quantidade de visualizações: 9968 vezes
Nesta dica mostrarei como podemos usar a função ToCharArray() da classe String da linguagem C# para converter todos os caracteres de uma palavra, frase ou texto em um vetor de chars. Em seguida nós usaremos o método Reverse() da classe Array para inverter a ordem dos elementos do vetor. Finalmente nós passamos este vetor para o construtor da classe String para obter a string original novamente, só que desta vez, com a ordem de suas letras invertidas.

Veja o código C# completo para o exemplo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string frase = "Gosto de C#";
      Console.WriteLine("Frase original: " + frase);

      // obtém um array de caracteres a partir da string
      char[] letras = frase.ToCharArray();
      Array.Reverse(letras); // inverte o array

      // transforma em string novamente
      string resultado = new String(letras);
      Console.WriteLine("Frase invertida: " + resultado);

      Console.WriteLine();
    }
  }
}

Ao executar este código C# nós teremos o seguinte resultado:

Frase original: Gosto de C#
Frase invertida: #C ed otsoG


Java ::: Dicas & Truques ::: Mouse e Teclado

Como ligar ou desligar a tecla Caps Lock do seu teclado usando Java

Quantidade de visualizações: 18096 vezes
Nesta dica mostrarei como ligar ou desligar a tecla Caps Lock (tudo maiúsculo) do seu teclado usando o método setLockingKeyState() da classe Toolkit, do pacote java.awt. Note que passei o valor true para ligar o Caps Lock e false para desligar.

Veja o código completo para o exemplo:

 
import java.awt.Toolkit;
import java.awt.event.*;
 
public class Estudos{
  public static void main(String[] args){
    Toolkit tk = Toolkit.getDefaultToolkit();    
     
    // Liga a tecla Caps Lock
    tk.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, true);
     
    // Para desligar basta usar:
    // tk.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, false);    
 
    System.exit(0);
  }
}

Esta dica foi testada no Java 8 e Windows 10.


Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet

Como obter a quantidade de registros em um TClientDataSet do Delphi usando a propriedade RecordCount

Quantidade de visualizações: 11421 vezes
Em algumas situações precisamos saber a quantidade de registros atualmente armazenados em um componente TClientDataSet. Para isso podemos usar a propriedade RecordCount, implementada originalmente na classe TDataSet e reimplementada na classe TClientDataSet.

Veja um trecho de código no qual usamos o evento OnClick de um botão para exibir a quantidade de registros atualmento no TClientDataSet:

procedure TForm3.Button3Click(Sender: TObject);
var
  qRegistros: Integer;
begin
  // obtém a quantidade de registros no TClientDataSet
  qRegistros := ClientDataSet1.RecordCount;

  // mostra o resultado
  ShowMessage('O ClientDataSet possui ' + IntToStr(qRegistros)
    + ' registros.');
end;

Ao executar o código e clicar no botão você verá uma mensagem parecida com:

"O ClientDataSet possui 20 registros.".

Esta dica foi escrita e testada no Delphi 2009.

Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

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á 28 usuários muito felizes estudando em nosso site.