quarta-feira, 28 de abril de 2021

FMX - Abrindo imprimindo e alterando um arquivo

No último post, há alguns dias atrás,
criamos um programa no C++ builder,
que fazia leitura, pesquisa individual,
e remoção de um cadastro criado manualmente
num arquivo.
E como ficou determinado que no post seguinte,
nós faríamos alterações num cadastro dentro
de um arquivo de texto, aqui está cumprido.
Pena que por falta de tempo suficiente
não fizemos isto antes, mas conseguimos
reservar algumas horas para programar.
Sempre que temos que fazer alterações num
arquivo, optamos por trabalhar com a abertura
de dois e de nomes diferentes, isto é óbvio,
sendo um como leitura e outro como escrita.
No arquivo que abrimos como escrita,
fizemos as alterações, mas ele precisa
assumir o nome do arquivo que foi aberto 
como leitura, sendo que o arquivo,
que foi aberto como leitura precisa
ser destruído, e o arquivo que foi aberto
como escrita e que recebeu as alterações,
agora é o arquivo principal.
Para fazer este processo conheço
duas maneiras, uma é a clássica, usando,
as funções da biblioteca padrão do C,
à saber, as funções rename ( ..., ... );
e remove ( ... ); e a outra maneira,
pouco usada, acredito assim, mas que estamos
usando neste programa e no programa do post
anterior, que é na força bruta, com comandos
do dos, e que funciona perfeitamente ainda hoje.
Na opção de alterar cadastro, preferi manter,
o que foi configurado no programa anterior,
isto é, apagar um cadastro deixando o espaço
em branco, para isto basta clicar no botão
"Editar", sem que nada tenha sido escrito,
nos campos do componente de edição.
Mesmo nós tendo criado manualmente 29 cadastros,
O programa está pronto para selecionar um cadastro,
entre centenas ou milhares, porque a pesquisa
é eficiente e não falha, e sabemos muito bem
do que estamos falando.
Então, nos posts anteriores, fizemos leitura,
fizemos precisa pesquisa, fizemos remoção,
e agora alteração de cadastros em arquivo.
Pergunta:
Podemos fazer um programa para criar cadastros,
onde um foi removido com sucesso,
ou se não houver cadastros vazios, inserir
com precisão abaixo do último cadastro?
ora, o programa terá de ser inteligente
o suficiente para detectar cadastros vazios,
e inserir o novo cadastro no primeiro vago
que encontrar, e se não houver cadastros vazios,
ele automaticamente irá inserir depois do último.
Vamos queimar nossos miolos?
Até breve, se Deus quiser. 
Assistam o vídeo por favor.
Se precisarem de ajuda com o C++ builder,
entre em contato comigo.




//-----------------------------------------------------------------------
//FormCreate está funcionando com um evento OnClick do Button1
void __fastcall TForm2::FormCreate ( TObject *Sender ) {
   Label_Manual ( Sender );

   ScrollBox1 -> Visible = false;
   Button1 -> Visible = false;
   //pos X, pos Y, Width, Height, Size, Bool, Color,String
   T_Text ( 50, 35, 500, 20, 17, true, 2, 3, "ARQUIVO - ABRINDO IMPRIMINDO E ALTERANDO" );

   Imprime_Arquivo ( Sender );

   Button1 -> Visible = true;
   x++;

   if (  x == 2 && Form2 -> Edit1 -> Text == "" ) {
Beep ( 500, 500 );
Form2 -> Show ( );
Form3 -> Hide ( );
Form1 -> Hide ( );
                        x = 1;
   }

   if ( x == 2 ) {
   int c = 0;
   c = Contador ( );
   T_Text ( 100, 60, 270, 17, 14, true, 3, 1, "Alterando o cadastro de Nº: " );
   T_Rect ( 340, 60, 20, 17, 3, 4 );
   T_Text ( 340, 60, 20, 17, 14, true, 3, 0, c );
   Form2 -> Terceira_janela ( Sender );
   x = 1;
   }
}
//---------------------------------------------------------------------------


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.