Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como usar a função BlockRead() para ler um ou mais bytes de um arquivoQuantidade de visualizações: 12040 vezes |
A função BlockRead() pode ser usada quando precisamos ler um ou mais bytes em um arquivo não tipado, ou seja, um arquivo de tipo arbitrário não texto. Veja sua assinatura: a) procedure BlockRead(var F: File; var Buf; Count: Integer); overload; b) procedure BlockRead(var F: File; var Buf; Count: Integer; var AmtTransferred: Integer); overload; Aqui F é um arquivo não tipado a partir do qual os dados serão lidos, Buf é qualquer variável na qual os dados lidos serão armazenados, Count é uma expressão do tipo Integer e representa a quantidade de registros a serem lidos e AmtTransferred é uma variável opcional do tipo Integer que representa a quantidade de registros realmente lidos. Vamos ver um exemplo? Eis um trecho de código no qual lemos um byte de um arquivo chamado dados.dat: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var arquivo: File; valor: Byte; begin // vamos abrir o arquivo para leitura AssignFile(arquivo, 'dados.dat'); Reset(arquivo, 1); // tamanho do registro = 1 byte // vamos ler um byte e guardá-lo na variável valor BlockRead(arquivo, valor, 1); // vamos exibir o valor do byte lido ShowMessage(IntToStr(valor)); // vamos fechar o arquivo CloseFile(arquivo); end; Veja que usamos a função Reset() para abrir o arquivo para leitura e também para definir que cada registro lido terá o tamanho de 1 byte. Veja agora como podemos ler um inteiro Integer, ou seja, um grupo de 4 bytes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var arquivo: File; valor: Integer; // equivale a 4 bytes begin // vamos abrir o arquivo para leitura AssignFile(arquivo, 'dados.dat'); Reset(arquivo, 4); // tamanho do registro = 4 bytes // vamos ler um Integer e guardá-lo na variável valor BlockRead(arquivo, valor, 1); // vamos exibir o valor do Integer lido ShowMessage(IntToStr(valor)); // vamos fechar o arquivo CloseFile(arquivo); end; Aqui nós definimos que cada registro lido terá o tamanho de 4 bytes. Para finalizar, veja como podemos ler um grupo de 4 bytes de cada vez e guardá-los em uma matriz de Byte: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var arquivo: File; valores: array[0..3] of Byte; // uma matriz de 4 bytes i: integer; begin // vamos abrir o arquivo para leitura AssignFile(arquivo, 'dados.dat'); Reset(arquivo, 1); // tamanho do registro = 1 byte // vamos ler o grupo de 4 bytes e guardá-lo na matriz valores BlockRead(arquivo, valores, sizeof(valores)); // vamos mostrar os valores lidos for i := 0 to 3 do begin ShowMessage(IntToStr(valores[i])); end; // vamos fechar o arquivo CloseFile(arquivo); end; |
![]() |
Delphi ::: dbExpress ::: TSQLDataSet |
Como obter a quantidade de campos nos registros retornados em um TSQLDataSet do Delphi usando a propriedade FieldCountQuantidade de visualizações: 10942 vezes |
Em algumas situações precisamos saber a quantidade de campos retornados em um objeto TSQLDataSet depois de dispararmos o comando SQL SELECT definido em sua propriedade CommandText. Para isso podemos usar a propriedade FieldCount. Veja sua assinatura: property FieldCount: Integer; Esta propriedade é definida originalmente em TDataSet e herdada pela classe TSQLDataSet. Veja um trecho de código no qual disparamos um comando SQL SELECT em uma tabela contatos e exibimos a quantidade de campos dos registros retornados: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button1Click(Sender: TObject); begin // vamos definir o comando SQL a ser executado SQLDataSet1.CommandText := 'SELECT * FROM contatos'; // vamos executar o comando SQLDataSet1.Open; // vamos obter a quantidade de registros retornados ShowMessage('Quantidade de campos retornados: ' + IntToStr(SQLDataSet1.FieldCount)); end; Ao executarmos este trecho de código teremos uma mensagem com o seguinte texto: Quantidade de campos retornados: 5. Note que a propriedade FieldCount inclui somente os campos listados na propriedade Fields. Quaisquer campos agregados listados pela propriedade AggFields não são incluídos na contagem. |
Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como obter o índice inicial e final de um vetor usando as funções Low() e High() da unit System do DelphiQuantidade de visualizações: 11837 vezes |
Como os índices dos vetores em Delphi, diferente de outras linguagens, nem sempre começam em 0, não podemos deduzir que Length() - 1 retornará o índice final do vetor. Desta forma, podemos usar as funções Low() e High(), ambas presentes na unit System. A função Low() retorna o índice inicial do vetor, enquanto High() retorna o índice final. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button1Click(Sender: TObject); var valores: array[11..20] of Integer; inicio, fim: Integer; begin // vamos obter o índice inicial do vetor inicio := Low(valores); // vamos obter o índice final da vetor fim := High(valores); // vamos exibir o resultado ShowMessage('O índice inicial do vetor é: ' + IntToStr(inicio)); ShowMessage('O índice final do vetor é: ' + IntToStr(fim)); ShowMessage('O tamanho do vetor é: ' + IntToStr((fim - inicio) + 1)); end; Lembre-se desta dica quando precisar percorrer os elementos de um vetor ou uma matriz usando o laço For da linguagem Delphi. |
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como selecionar um item de uma ListBox do Delphi em tempo de execução usando a propriedade ItemIndexQuantidade de visualizações: 15426 vezes |
É possível selecionar, em tempo de execução, um dos itens de uma ListBox. Para isso, só precisamos definir um valor para a propriedade ItemIndex. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); begin // vamos selecionar o segundo item na ListBox ListBox1.ItemIndex := 1; // o índice do primeiro item é 0 // note que este código não funciona para ListBoxes de // seleção múltipla end; Note que este código não se aplica às ListBoxes de seleção múltipla. 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 |
![]() 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 |
![]() 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 |