Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Delphi ::: VCL - Visual Component Library ::: TComboBox

Como usar a propriedade Count da coleção Items para retornar a quantidade de itens em um TComboBox em Delphi

Quantidade de visualizações: 11991 vezes
Em algumas situações precisamos obter a quantidade de itens em um ComboBox. Para isso podemos usar a propriedade Count da coleção Items (um objeto da classe TStrings e que representa os itens do combo box). Esta propriedade retorna um valor inteiro.

Veja como podemos obter a quantidade de elementos em um ComboBox ao clicarmos em um botão:

----------------------------------------------------------------------
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.Button1Click(Sender: TObject);
begin
  // vamos adicionar alguns itens ao ComboBox
  ComboBox1.Items.Add('Java');
  ComboBox1.Items.Add('C++');
  ComboBox1.Items.Add('Python');

  // vamos obter a quantidade de itens no ComboBox
  ShowMessage('O ComboBox possui '  + IntToStr(ComboBox1.Items.Count) +
    ' itens.');
end;

Ao executar este código teremos uma mensagem com o texto:

O ComboBox possui 3 itens.

Link para compartilhar na Internet ou com seus amigos:

Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens

Como carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la no formulário usando Delphi

Quantidade de visualizações: 18504 vezes
Em algumas situações nós precisamos carregar uma imagem JPG, convertê-la em Bitmap e desenhá-la em nosso formulário. Nesta dica eu mostro como isso pode ser feito. Vamos começar lendo a imagem JPG a partir do diretório da aplicação:

----------------------------------------------------------------------
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.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
  jpg: TJPEGImage;
begin
  // uses Jpeg; // não esqueça

  // vamos criar o bitmap
  bmp := TBitmap.Create;
  // vamos criar o JPG
  jpg := TJPEGImage.Create;

  try
    // vamos carregar a imagem JPG
    jpg.LoadFromFile('foto.jpg');
    // vamos convertê-la para Bitmap
    bmp.Assign(jpg);
    // vamos desenhar o bitmap no formulário
    // começando nas coordenadas x = 0; y = 0 a partir
    // do canto superior esquerdo da área cliente do formulário
    Form3.Canvas.Draw(0, 0, bmp);
  finally
    Jpg.Free;
    Bmp.Free;
  end;
end;

Veja que a técnica consiste em carregar a imagem JPG e convertê-la em Bitmap usando o método Assign() da classe TBitmap. Em seguida só precisamos usar o método Draw() do Canvas do formulário para desenhar a imagem já convertida.

Caso você precise carregar a imagem JPG em tempo de execução, basta colocar um TOpenPictureDialog no formulário e alterar o código do evento Click do botão para:

----------------------------------------------------------------------
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.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
  jpg: TJPEGImage;
begin
  // uses Jpeg; // não esqueça

  if OpenPictureDialog1.Execute then
    begin
      // vamos criar o bitmap
      bmp := TBitmap.Create;
      // vamos criar o JPG
      jpg := TJPEGImage.Create;

      try
        // vamos carregar a imagem JPG
        jpg.LoadFromFile(OpenPictureDialog1.FileName);
        // vamos convertê-la para Bitmap
        bmp.Assign(jpg);
        // vamos desenhar o bitmap no formulário
        // começando nas coordenadas x = 0; y = 0 a partir
        // do canto superior esquerdo da área cliente do formulário
        Form3.Canvas.Draw(0, 0, bmp);
      finally
        Jpg.Free;
        Bmp.Free;
      end;
    end;
end;


Vamos complicar um pouco mais? Que tal uma função que carrega a imagem JPG, faz a conversão para Bitmap e retorna o Bitmap para o chamador? 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 
----------------------------------------------------------------------

function jpg2bitmap(const imagem: String): TBitmap;
var
  bmp: TBitmap;
  jpg: TJPEGImage;
begin
  // uses Jpeg; // não esqueça
  // vamos criar o bitmap
  bmp := TBitmap.Create;
  // vamos criar o JPG
  jpg := TJPEGImage.Create;

  try
    // vamos carregar a imagem JPG
    jpg.LoadFromFile(imagem);
    // vamos convertê-la para Bitmap
    bmp.Assign(jpg);
  except
    bmp := nil;
  end;

  // vamos retornar o bitmap resultante
  Jpg.Free;
  Result := bmp;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  // vamos obter o Bitmap a partir da função personalizada
  bmp := jpg2bitmap('foto2.jpg');

  // a imagem Bitmap foi obtida com sucesso?
  if bmp <> nil then
    begin
      // vamos desenhar o bitmap no formulário
      // começando nas coordenadas x = 0; y = 0 a partir
      // do canto superior esquerdo da área cliente do formulário
      Form3.Canvas.Draw(0, 0, bmp);
      bmp.Free;
    end
  else
    ShowMessage('Não foi possível obter o Bitmap');
end;

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


Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como declarar e inicializar uma matriz de Integer em Delphi

Quantidade de visualizações: 12300 vezes
Nesta dica eu mostrarei como declarar e inicializar uma matriz de inteiros (Integer) em Delphi. Mostrarei também como exibir o valor de cada elemento usando um laço For. Veja o 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.Button1Click(Sender: TObject);
var
  // vamos declarar uma matriz de 10 inteiros
  valores: array[1..10] of Integer;
  i: Integer;
begin
  // vamos inicializar a matriz com os números pares de 2 até 20
  for i := Low(valores) to High(valores) do
    begin
      valores[i] := i * 2;
    end;

  // vamos exibir os valores dos elementos
  for i := Low(valores) to High(valores) do
    begin
      Memo1.Lines.Add(IntToStr(valores[i]));
    end;
end;


Ao executar este código teremos o seguinte resultado:

2
4
6
8
10
12
14
16
18
20


Delphi ::: Dicas & Truques ::: Matemática e Estatística

Como calcular porcentagem em Delphi - Como efetuar cálculos de porcentagem em Delphi

Quantidade de visualizações: 30659 vezes
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em Delphi.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em Delphi:

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

// Algoritmo que calcula porcentagem em Delphi
program estudos_delphi;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: double;

begin
  valor := 178.00; // valor original
  percentual := 15.0 / 100.0; // 15%
  valor_final := valor + (percentual * valor);

  // mostra o resultado
  WriteLn('O valor final do produto é: ' + FloatToStr(valor_final));

  // O resultado será 204,70

  WriteLn;
  Write('Pressione Enter para sair...');
  ReadLn;
end.

Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em Delphi:

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

// Algoritmo que calcula porcentagem em Delphi
program estudos_delphi;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: double;

begin
  valor := 250.00; // valor original
  percentual := 8.0 / 100.0; // 8%
  valor_final := valor - (percentual * valor);

  // mostra o resultado
  WriteLn('O valor final do produto é: ' + FloatToStr(valor_final));

  // O resultado será 230,00

  WriteLn;
  Write('Pressione Enter para sair...');
  ReadLn;
end.

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em Delphi:

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

// Algoritmo que calcula porcentagem em Delphi
program estudos_delphi;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  // variáveis usadas na resolução do problema
  perguntas, acertos: double;

begin
  perguntas := 90.0;
  acertos := 72.0;

  // mostra a porcentagem de acertos
  WriteLn('Porcentagem de acertos: ' +
    FloatToStr((acertos / perguntas) * 100) + '%');

  // mostra a porcentagem de erros
  WriteLn('Porcentagem de erros: ' +
    FloatToStr(((perguntas - acertos) / perguntas) * 100) + '%');

  // Os resultados serão 80% e 20%

  WriteLn;
  Write('Pressione Enter para sair...');
  ReadLn;
end.

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em Delphi:

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

// Algoritmo que calcula porcentagem em Delphi
program estudos_delphi;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  // variáveis usadas na resolução do problema
  valor_anterior, novo_valor, porcentagem_lucro: double;

begin
  valor_anterior := 300.0; // valor anterior
  novo_valor := 340.0; // valor novo

  // calcula a porcentagem de lucro
  // efetua o cálculo
  porcentagem_lucro := ((novo_valor * 100) / valor_anterior) - 100;

  WriteLn('A porcentagem de lucro foi de: ' +
    FloatToStr(porcentagem_lucro) + '%');

  // O resultado será 13,33

  WriteLn;
  Write('Pressione Enter para sair...');
  ReadLn;
end.

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em Delphi:

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

// Algoritmo que calcula porcentagem em Delphi
program estudos_delphi;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  // variáveis usadas na resolução do problema
  valor, percentual, comissao: double;

begin
  valor := 70.0; // valor do produto
  percentual := 5.0 / 100.0; // 5%

  // calcula a comissão
  comissao := percentual * valor;

  // mostra o resultado
  WriteLn('O valor repassado ao vendedor é: '
    + FloatToStr(comissao));

  // O resultado será 3,5

  WriteLn;
  Write('Pressione Enter para sair...');
  ReadLn;
end.



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

Como excluir diretórios em Delphi usando a função RemoveDir()

Quantidade de visualizações: 15476 vezes
Em algumas situações nossas aplicações Delphi precisam remover diretórios. Isso pode ser feito com o auxílio da função RemoveDir() da unit SysUtils. Esta função recebe uma string representando o diretório a ser excluído e retorna um valor true se o diretório foi excluído com sucesso e false em caso contrário. Para que o diretório seja excluído com sucesso ele deverá estar vazio.

Veja um trecho de código no qual usamos a função RemoveDir() para remover um diretório:

----------------------------------------------------------------------
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
  diretorio: String;
begin
  // vamos excluir o diretório abaixo
  diretorio := 'C:\estudos_delphi\arquivo';

  if RemoveDir(diretorio) then
    ShowMessage('Diretório excluído com sucesso.')
  else
    ShowMessage('Não foi possível excluir o diretório.');
end;

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

Diretório excluído com sucesso.

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


Delphi ::: VCL - Visual Component Library ::: TStringGrid

Como obter ou definir a quantidade de linhas e colunas fixas em um TStringGrid do Delphi

Quantidade de visualizações: 12198 vezes
Um controle TStringGrid possui a capacidade de exibir linhas e colunas fixas, ou seja, estas linhas e colunas permanecem visíveis na área do componente quando as barras de rolagem são acionadas. Isso é útil na exibição dos títulos das colunas ou numeração das linhas.

A quantidade de linhas fixas no controle TStringGrid pode ser definida por meio da propriedade FixedRows, enquanto a quantidade de colunas fixas pode ser definida por meio da propriedade FixedCols. Estas propriedades podem ser manipuladas em tempo de design ou execução. Veja um trecho de código no qual eliminamos as linhas e colunas fixas (definindo o valor 0 para ambas as propriedades):

----------------------------------------------------------------------
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);
begin
  // vamos definir a quantidade de linhas e colunas fixas
  // no TStringGrid
  StringGrid1.FixedRows := 0;
  StringGrid1.FixedCols := 0;
end;

Em tempo de execução a quantidade de linhas e/ou colunas fixas em um TStringGrid podem ser obtidas com código semelhante ao mostrado abaixo:

----------------------------------------------------------------------
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);
begin
  // vamos obter a quantidade de linhas e colunas fixas
  // no TStringGrid
  Memo1.Lines.Add('Quantidade de linhas fixas: ' +
    IntToStr(StringGrid1.FixedRows));
  Memo1.Lines.Add('Quantidade de colunas fixas: ' +
    IntToStr(StringGrid1.FixedCols));
end;

Execute este código e clique no botão. Você terá um resultado parecido com:

Quantidade de linhas fixas: 1
Quantidade de colunas fixas: 1


Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid

Como obter a quantidade de linhas em um controle TDBGrid do Delphi (duas formas)

Quantidade de visualizações: 10512 vezes
A quantidade de linhas em um controle TDBGrid pode ser obtida de duas formas diferentes. A primeira consiste em fazer uma conversão de TDBGrid para TStringGrid e usar a propriedade RowCount. 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 TForm3.Button3Click(Sender: TObject);
var
  quantLinhas: Integer;
begin
  // vamos obter a quantidade de linhas no DBGrid
  quantLinhas := TStringGrid(DBGrid1).RowCount;

  // vamos mostrar o resultado
  ShowMessage('O DBGrid possui ' + IntToStr(quantLinhas) + ' linhas.');
end;

Ao executar este código você verá um mensagem parecida com:

"O DBGrid possui 5 linhas."

Note que a propriedade RowCount inclui a linha reservada aos títulos das colunas do DBGrid, ou seja, uma linha a mais que a quantidade de registros no controle.

A segunda forma de se obter a quantidade de linhas no DBGrid consiste em obter a quantidade de registros no TDataSet no qual o DBGrid está conectado por meio de sua propriedade DataSource. Veja como isso pode ser feito:

----------------------------------------------------------------------
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);
var
  quantLinhas: Integer;
begin
  // vamos obter a quantidade de linhas no DBGrid
  quantLinhas := DBGrid1.DataSource.DataSet.RecordCount;

  // vamos mostrar o resultado
  ShowMessage('O DBGrid possui ' + IntToStr(quantLinhas) + ' linhas.');
end;

Veja que aqui nós usamos a propriedade RecordCount para obter a quantidade de registros no DataSet. Note que agora a contagem de linhas não inclui a linha reservada para os títulos das colunas.

Esta dica foi escrita e testada no Delphi 2009.


Delphi ::: Fundamentos da Linguagem ::: Estruturas de Controle

Delphi para iniciantes: Como usar o laço de repetição for do Delphi

Quantidade de visualizações: 22111 vezes
O laço for do Delphi (linguagem Object Pascal) é usado quando queremos que um determinado bloco de instruções seja executado um determinado número de vezes. Na maioria das vezes a execução deste laço é controlada por uma variável de controle, que deve ser declarada antes de seu uso.

Veja um laço for que contará de 0 até 10 (incluído):

----------------------------------------------------------------------
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.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  for i := 0 to 10 do
    begin
      ShowMessage(IntToStr(i)); // mostra a mensagem 10 vezes
    end;
end;

Veja que o valor da variável de controle i começa em 0 e é incrementado a cada iteração até que seu valor seja igual a 10, o que faz com que a execução do laço seja interrompida. A variável de controle de um laço for deve ser do tipo ordinal (inteiro, caractere, Boolean, enumerações ou sub-faixas) e não pode ser alterada dentro do laço. 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.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  // este laço for pretende exibir os números pares de 0 a 10
  for i := 0 to 10 do
    begin
      ShowMessage(IntToStr(i));
      i := i + 2;  // vamos ter problemas aqui
    end;
end;

Ao tentarmos compilar este código teremos o seguinte erro:

[DCC Error] Unit1.pas(107): E2081 Assignment to FOR-Loop variable 'i'

Este erro nos informa que não é possível atribuir valor a uma variável de controle dentro do laço for. Se quisermos que o laço "conte" de trás para frente, podemos substituir a palavra-chave to por downto. 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.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  // este laço for conta de 10 até 0
  for i := 10 downto 0 do
    begin
      ShowMessage(IntToStr(i));
    end;
end;


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


Delphi ::: Dicas & Truques ::: Strings e Caracteres

Apostila Delphi para iniciantes - Como acessar os caracteres de uma string individualmente

Quantidade de visualizações: 17811 vezes
Em algumas situações pode ser necessário acessar os caracteres de uma palavra, frase ou texto individualmente. Em Delphi isso pode ser feito usando-se a indexação de matrizes. Tenha em mente, porém, que o índice em Delphi começa em 1 e não 0, como na maioria das linguagens.

Veja um trecho de código no qual acessamos o primeiro caractere de uma string:

----------------------------------------------------------------------
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
  nome: string;
  letra: Char;
begin
  nome := 'Osmar J. Silva';

  // vamos obter a primeira letra
  letra := nome[1];

  // vamos exibir o resultado
  ShowMessage('A primeira letra é: ' + letra);
end;

Veja outro exemplo, no qual usamos um laço for para visitar cada um dos caracteres e exibí-lo:

----------------------------------------------------------------------
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
  nome: string;
  letra: Char;
  i: integer;
begin
  nome := 'Osmar';

  for i := 1 to Length(nome) do
    begin
      letra := nome[i];
      ShowMessage('O ' + IntToStr(i) + 'º caractere é: '
        + letra);
    end;
end;

Assim como acessamos os caracteres individuais de uma string para leitura, podemos fazê-lo também para alterações. Veja um trecho de código no qual trocamos o terceiro caractere de uma string:

----------------------------------------------------------------------
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
  nome: string;
begin
  nome := 'Osmar';

  // vamos alterar o terceiro caractere
  nome[3] := 'K';
  
  ShowMessage(nome);
end;

Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009.


Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil dos prepostos e preponentes

Com relação as definições do preposto, assinale a alternativa correta.

A) O preposto pode negociar por conta própria ou de terceiro, e participar indiretamente de operação idêntica a que lhe foi cometida.

B) O preposto não pode, sem autorização escrita, fazer-se substituir no desempenho da preposição, sob pena de responder pessoalmente pelos atos do substituto e pelas obrigações por ele contraídas.

C) Considera-se inválida a entrega de papéis, bens ou valores ao preposto, encarregado pelo preponente, se este os recebeu sem protesto.

D) As limitações contidas na outorga de poderes podem ser opostas a terceiros, dependem do arquivamento e averbação do instrumento no Registro Público de Empresas Mercantis.

E) No exercício de suas funções, os prepostos são pessoalmente responsáveis, perante terceiros, pelos atos culposos e atos dolosos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Aglomerantes

Definimos a cal metalúrgica como:

A) Produto da hidratação da cal viva.

B) Mistura de escórias de alto forno com cal hidráulica.

C) Mistura de cinzas vulcânicas com cal hidratada.

D) Sulfatos hidratados e anidros de cálcio.

E) Calcinação de rochas calcárias que contenham proporção de materiais argilosos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

O exercício do direito à propriedade

Os direitos de vizinhança, quando violados, abrem para o lesado a possibilidade de ingressar com a medidas judiciais assecuratórias do seu direito, como solicitar a suspensão da obra que está sendo realizada pelo vizinho, sua reformulação ou demolição. Sobre esse tema, assinale a alternativa correta e as possíveis alterações legislativas nesse procedimento:

A) A ação de nunciação de obra nova é procedimento especial do Código de Processo Civil de 2015.

B) A ação de nunciação de obra nova não deve sofrer, atualmente, mudança de terminologia e tramita pelo procedimento especial.

C) O objetivo principal é reformular ou demolir a obra; a suspensão é mero pedido liminar no início da ação.

D) A ação de nunciação de obra nova também pode ser ajuizada para a obra que já tiver sido finalizada.

E) O prazo para ingressar com a nunciação é de até um ano e um dia a contar da conclusão da obra.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Qual é a forma correta de se escrever o condicional if em JavaScript?

A) if a == 10 then

B) if (a == 10):

C) if (a == 10) {}

D) if a = 10:
Verificar Resposta Estudar Cards Todas as Questões

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

Qual das alternativas a seguir possui exemplos, na ordem correta de ações: permanentes diretas, permanentes indiretas, acidentais diretas, acidentais indiretas e excepcionais.

A) Peso próprio, variações de temperatura, cargas móveis, protensão e terremotos.

B) Peso próprio, protensão, vento, variações de temperatura e terremotos.

C) Deslocamento de apoio, imperfeições geométricas, vento, variações de temperatura e terremotos.

D) Peso próprio, imperfeições geométricas, vento, força longitudinal de frenagem e explosões.

E) Peso próprio, imperfeições geométricas, vento, variações de temperatura e cargas verticais de uso da construção.
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

E-Books em PDF

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

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.