Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como usar a função BlockWrite() para escrever um ou mais bytes em um arquivoQuantidade de visualizações: 10807 vezes |
A função BlockWrite pode ser usada quando precisamos escrever 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 BlockWrite(var F: File; var Buf; Count: Integer); overload; b) procedure BlockWrite(var F: File; var Buf; Count: Integer; var AmtTransferred: Integer); overload; Aqui F é um arquivo não tipado no qual os dados serão escritos, Buf é qualquer variável contendo os dados que serão escritos no arquivo, Count é uma expressão do tipo Integer e representa a quantidade de registros a serem escritos e AmtTransferred é uma variável opcional do tipo Integer que representa a quantidade de registros realmente escritos. Vamos ver um exemplo do uso desta função? Considere 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 TForm3.Button2Click(Sender: TObject); var arquivo: File; valor: Byte; begin // vamos abrir o arquivo para escrita AssignFile(arquivo, 'dados.dat'); Rewrite(arquivo, 1); // tamanho do registro = 1 byte valor := 90; // vamos escrever o valor 90 BlockWrite(arquivo, valor, 1); end; Aqui nós escrevemos o byte 90 no arquivo "dados.dat". Note que, ao chamar a função Rewrite() nós informamos que o arquivo sendo criado terá o tamanho de 1 byte por registro. Vejamos agora como escrever quatro bytes (agrupados em um Integer): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button2Click(Sender: TObject); var arquivo: File; valor: Integer; begin // vamos abrir o arquivo para escrita AssignFile(arquivo, 'dados.dat'); Rewrite(arquivo, 4); // tamanho de cada registro = 4 bytes valor := 2290; // vamos escrever o valor 2290 BlockWrite(arquivo, valor, 1); end; Desta vez nós definimos que cada registro no arquivo terá 4 bytes, ou seja, um inteiro (Integer). Para finalizar, veja como podemos escrever um array (matriz) de bytes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm3.Button2Click(Sender: TObject); var arquivo: File; valores: array[0..3] of Byte; // uma matriz de 4 bytes i: integer; begin // vamos abrir o arquivo para escrita AssignFile(arquivo, 'dados.dat'); Rewrite(arquivo, 1); // tamanho de cada registro = 1 byte // vamos atribuir valores aos bytes for i := 0 to 3 do begin valores[i] := (i + 1); end; // vamos escrever um bloco de 4 registros de 1 byte cada BlockWrite(arquivo, valores, 4); end; |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: Dicas & Truques ::: Data e Hora |
Delphi para iniciantes - Como criar uma data e hora em Delphi usando a função EncodeDateTime()Quantidade de visualizações: 20406 vezes |
Em algumas situações precisamos contruir uma determinada data e hora e retornar um TDateTime. Isso pode ser feito com o auxílio da função EncodeDateTime(). Esta função requer valores inteiros representando o ano, mês, dia, horas, minutos, segundos e milisegundos. Veja um exemplo no qual construímos a data 22/10/2009: ---------------------------------------------------------------------- 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 data_hora: TDateTime; begin // não esqueça de incluir DateUtils no uses // vamos construir a data 22/10/2009 data_hora := EncodeDateTime(2009, 10, 22, 0, 0, 0, 0); // vamos exibir o resultado ShowMessage('A data é: ' + DateTimeToStr(data_hora)); end; Note que deixamos os valores de horas, minutos, segundos e milisegundos como 0. Experimente construir a mesma data fornecendo também os valores de horas, minutos, segundos e milisegundos. Há, contudo, alguns cuidados a serem tomados. Os valores fornecidos para a função EncodeDateTime() devem obedecer as regras de limites mínimos e máximos: a) O valor do ano deve estar entre 1 e 9999; b) Os valores de meses devem estar entre 1 e 12 (incluindo); c) Os valores válidos para os dias variam de 1 até 28, 29, 30 ou 31, dependendo do valor do mês. Por exemplo, os valores possíveis para o mês 2 (fevereiro) são de 1 até 28 ou até 29, dependendo ou não se o valor do ano especificado for um ano bissexto; d) Valores para a hora devem estar entre 0 e 24. Se a hora for definida como 24, os valores dos minutos, segundos e milisegundos deverão ser 0, e o TDateTime resultante representará a meia-noite no final do dia especificado e o início do próximo dia; d) Os valores dos minutos devem variar de 0 até 59; e) Os valores de segundos devem variar de 0 até 59; f) Os valores de milisegundos devem variar de 0 até 999. Se os valores informados para a função EncodeDateTime() estiverem fora destas faixas, uma exceção EConvertError será lançada. Esta exceção ocorrerá em tempo de execução. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TField e Classes Derivadas |
Como usar a classe TField em seus programas DelphiQuantidade de visualizações: 12276 vezes |
A classe TField (na unit DB) é um ancestral comum de todos os componentes que representam os campos de uma tabela no banco de dados (ou um dataset cujos dados foram carregados de um arquivo do tipo texto, binário ou XML). Esta classe encapsula o comportamento comum a todos os demais componentes to tipo field (campo). Veja sua posição na hierarquia de classes do Delphi: System.TObject Classes.TPersistent Classes.TComponent DB.TField A classe TField apresenta propriedades, eventos e métodos que são usados para as seguintes tarefas: 1) Alterar o valor de um campo em um dataset; 2) Converter o valor de um campo de um tipo para outro tipo; 3) Efetuar validações nos dados informados pelos usuários para determinados campos; 4) Definir como as informações dos campos são mostradas em tempo de exibição ou para edição; 5) Calcular o valor de um campo a partir de código escrito no evento OnCalcFields do dataset; 6) Pesquisar o valor do campo a partir de outro dataset. Em geral não criamos instâncias da classe TField diretamente. Componentes que descendem de TField são criados automaticamente a cada vez que o dataset é ativado. Estes descendentes podem ser dinâmicos (o padrão) ou persistentes. Componentes campos dinâmicos refletem as colunas dos metadados da tabela a qual pertencem no momento que o dataset é aberto. Componentes campos persistentes são criados em tempo de design usando o editor Fields, que especifica os campos no dataset, suas propriedades e a ordem em que deverão estar. A criação de componentes de campos persistentes garante que todas as vezes que uma aplicação for executada, ela usará e exibirá as mesmas colunas, na mesma ordem, até mesmo se a estrutura física da base de dados mudar. Se uma coluna em uma tabela na qual um componente de campo persistente é baseado for excluída ou alterada, o IDE gera uma exceção em vez de permitir a abertura do dataset usando um coluna não existente ou incompatível. Se isso acontecer, devemos remover o camponente field para o campo não existente usando o editor Fields. Um campo (field) em um dataset é sempre tratado como uma das classes descendentes de TField abaixo: TADTField TDateField TReferenceField TAggregateField TDateTimeField TSmallIntField TArrayField TFloatField TSQLTimeStampField TAutoIncField TFMTBCDField TStringField TBCDField TGraphicField TTimeField TBinaryField TGuidField TVarBytesField TBlobField TIDispatchField TVariantField TBooleanField TIntegerField TWideStringField TBytesField TInterfaceField TWordField TCurrencyField TLargeintField TDataSetField TMemoField ---------------------------------------------------------------------- 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 campo: TField; begin // vamos obter o campo com o nome "titulo" do registro atual campo := ClientDataSet1.FieldByName('titulo'); // vamos mostrar o valor do campo ShowMessage('O valor do campo é: ' + campo.AsString); end; Ao executarmos este código teremos um resultado parecido com: "O valor do campo é: Programando em Java". Esta dica foi escrita e testada no Delphi 2009. |
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular MDC em DelphiQuantidade de visualizações: 12013 vezes |
Como calcular o MDC (Máximo Divisor Comum) em Delphi Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada: Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b. O trecho de código abaixo mostra como calcular o MDC de dois números informados: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // função personalizada que permite calcular o MDC de dois // valores inteiros function MDC(a, b: Integer): Integer; var resto: Integer; begin while b <> 0 do begin resto := a mod b; a := b; b := resto; end; Result := a; end; procedure TForm3.Button1Click(Sender: TObject); var x, y: Integer; begin x := StrToInt(Dialogs.InputBox('MDC', 'Informe o primeiro valor:', '')); y := StrToInt(Dialogs.InputBox('MDC', 'Informe o segundo valor:', '')); // vamos mostrar o resultado ShowMessage('O Máximo Divisor Comum de ' + IntToStr(x) + ' e ' + IntToStr(y) + ' é ' + IntToStr(MDC(x, y))); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Sistema domiciliar de abastecimento de água Se alguém mergulha numa piscina, a água exerce uma pressão sobre o corpo. Da mesma forma, a água exerce uma pressão sobre outros fluidos ou sobre uma superfície. Essa pressão não depende do volume de água contido em determinado recipiente, mas da altura do nível da água. Assim, ao se dimensionar as tubulações, deve-se considerar as pressões máximas e mínimas que serão suportadas pelas tubulações. Dessa forma, a pressão máxima que a instalação de água fria pode apresentar durante o funcionamento dos aparelhos é: Selecione a resposta: A) 0,5mca. B) 60mca. C) 20mca. D) 40mca. E) 5mca. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Como encontrar o maior valor entre x e y em JavaScript? A) ceil(x, y) B) top(x, y) C) Math.max(x, y) D) Math.ceil(x, y) Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Analise o seguinte código Pythonletras = ['ab', 'cd'] for i in range(0, 2): letras.append(letras[i].upper()) print(letras) Qual é o resultado de sua execução? A) ['ab', 'cd'] B) ['AB', 'CD'] C) ['AB', 'CD', 'AB', 'CD'] D) ['ab', 'cd', 'AB', 'CD'] Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Estrutura e propriedade dos materiais A compreensão de muitas propriedades físicas dos materiais baseia-se no entendimento das forças existentes entre as moléculas. Em relação às ligações atômicas, assinale a alternativa correta. A) Cada ligação tem por objetivo fazer com que os átomos adquiram ligações metálicas. B) As ligações não costumam ocorrer concomitantemente em um mesmo material. C) Há três tipos de ligações diferentes: iônica, covalente e a força de Van der Waals. D) As ligações atômicas em alguns materiais podem ser puramente iônicas ou covalentes. E) A ligação metálica se dá por meio de uma aproximação muito intensa dos elementos. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
A transpiração é um processo fundamental na contribuição para o acúmulo de água em estado gasoso na atmosfera. Qual agente é um dos principais atores nesse processo? A) Rochas. B) Solos férteis. C) Chuvas. D) Seres vivos. E) Minerais. 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 |
Códigos Fonte |
Software 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 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 |