Você está aqui: Cards de Engenharia Civil - Fundações |
||
|
||
|
|
||
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 WindowsQuantidade de visualizações: 8993 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 ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Escreva um programa Java que leia duas notas obtidas por um aluno na disciplina de Algoritmos e Programação de Computadores, o número de aulas ministradasQuantidade de visualizações: 19298 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que leia duas notas obtidas por um aluno na disciplina de Algoritmos e Programação de Computadores, o número de aulas ministradas e o número de aulas assistidas por este aluno nesta disciplina. Calcule e mostre a média final deste aluno e diga se ele foi aprovado ou reprovado. Considere que para um aluno ser aprovado ele deve obter média final igual ou maior a 6,0 e ter no mínimo 75% de frequência. Importante: Seu código Java deverá validar os dados de entrada para que as notas não sejam menores que zero nem maiores que 10. Além disso, o número de aulas assistidas não pode ser maior que o número de aulas ministradas. Seu programa Java deverá exibir uma saída parecida com: Informe a primeira nota: 9 Informe a segunda nota: 7 Quantidade de aulas ministradas: 20 Quantidade de aulas assistidas: 17 Aluno aprovado com média 8.0 e frequencia 85.0% 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) {
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos ler as duas notas do aluno
System.out.print("Informe a primeira nota: ");
double n1 = Double.parseDouble(entrada.nextLine());
System.out.print("Informe a segunda nota: ");
double n2 = Double.parseDouble(entrada.nextLine());
// vamos ler a quantidade de aulas ministradas
System.out.print("Quantidade de aulas ministradas: ");
int aulas_ministradas = Integer.parseInt(entrada.nextLine());
// agora a quantidade de aulas assistidas pelo aluno
System.out.print("Quantidade de aulas assistidas: ");
int aulas_assistidas = Integer.parseInt(entrada.nextLine());
// agora temos que validar as informações inseridas
if((n1 < 0) || (n1 > 10)){
System.out.println("\nA nota n1 é inválida");
}
else if((n2 < 0) || (n2 > 10)){
System.out.println("\nA nota n2 é inválida");
}
else if(aulas_assistidas > aulas_ministradas){
System.out.println("Aulas assistidas maior que aulas ministradas");
}
else{
// vamos calcular a média do aluno
double media = (n1 + n2) / 2;
// vamos calcular a frequencia
double frequencia = (aulas_assistidas / (double)aulas_ministradas) * 100;
// vamos testar a aprovação do aluno agora
if((media >= 6.0) && (frequencia >= 75)){
System.out.println("Aluno aprovado com média " + media +
" e frequencia " + frequencia + "%");
}
else{
System.out.println("Aluno reprovado com média " + media +
" e frequencia " + frequencia + "%");
}
}
}
}
|
Java ::: Dicas & Truques ::: Timers |
Java Swing Exemplo completo: Como usar um timer para atualizar a hora atual em uma JLabelQuantidade de visualizações: 17495 vezes |
|
Este exemplo mostra como criar uma janela JFrame contendo dois botões JButton, um label JLabel e um timer (java.awt.Timer). Quando o timer dispara, o texto da label é atualizado para refletir a hora atual. Veja o resultado na imagem abaixo: ![]() E aqui está o código Java Swing completo para o exemplo:
package arquivodecodigos;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;
import java.text.DecimalFormat;
public class Estudos extends JFrame{
JLabel hora;
Timer timer;
DecimalFormat formato;
public Estudos() {
super("Usando timers em Java");
Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
formato = new DecimalFormat("00");
// Cria o timer
timer = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
atualizarHoras();
}
});
// Cria um botão com o texto "Iniciar"
JButton iniciar = new JButton("Iniciar");
iniciar.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
timer.start(); // inicia o timer
}
}
);
// Cria um botão com o texto "Parar"
JButton parar = new JButton("Parar");
parar.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
timer.stop(); // pára o timer
}
}
);
// JLabel que exibirá a hora atual
hora = new JLabel("00:00:00");
// Adiciona os botões à janela
c.add(iniciar);
c.add(parar);
// adiciona o label à janela
c.add(hora);
setSize(350, 250);
setVisible(true);
}
private void atualizarHoras(){
// Cria uma instância de Calendar
Calendar agora = Calendar.getInstance();
// horas, minutos e segundos
int horas = agora.get(Calendar.HOUR);
int minutos = agora.get(Calendar.MINUTE);
int segundos = agora.get(Calendar.SECOND);
hora.setText(formato.format(horas) + ":" +
formato.format(minutos) + ":" +
formato.format(segundos));
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
|
Java ::: Dicas & Truques ::: Formatação de datas, strings e números |
Como usar o método System.out.printf() do Java para converter um valor na base decimal para hexadecimalQuantidade de visualizações: 10965 vezes |
|
Nesta dica mostrarei como podemos tirar proveito do método System.out.printf() do Java 5.0 em diante para converter um valor na base decimal para hexadecimal e exibí-lo na tela. Veja o código completo para o exemplo:
package arquivodecodigos;
public class Estudos{
public static void main(String[] args){
int num = 35;
// exibe o valor na base hexadecimal
System.out.printf("O decimal %d convertido para hexadecimal é %x",
num, num);
}
}
Ao executar este código nós teremos o seguinte resultado: O decimal 35 convertido para hexadecimal é 23 |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Bof para verificar se estamos no primeiro registro do TClientDataSet do DelphiQuantidade de visualizações: 11423 vezes |
|
Em algumas situações gostaríamos de verificar se já estamos no primeiro registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset de trás para frente e queremos saber se já estamos no primeiro. Para isso podemos usar a propriedade Bof da classe TClientDataSet. Esta propriedade retorna true se estivermos no primeiro registro e false em caso contrário. Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet de trás para frente. Note o uso da propriedade Bof para finalizar as iterações do laço:
procedure TForm3.Button4Click(Sender: TObject);
begin
// vamos percorrer todos os registros do TClientDataSet
// de trás para frente
ClientDataSet1.Last; // vamos para o último registro
// e agora disparamos um laço While
while not ClientDataSet1.Bof do
begin
// vamos mostrar em um TMemo os valores do primeiro
// campo de cada registro
Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString);
// vamos mover para o registro anterior
ClientDataSet1.Prior;
end;
end;
A propriedade Bof é verdadeira quando: a) Abrimos um dataset. b) Efetuamos uma chamada ao método First (primeiro) do dataset. c) Chamamos o método Prior (anterior) do dataset e a chamada falha porque o registro atual já é o primeiro registro no dataset. d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio. 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 |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






