-
Posts
18 -
Cadastrado em
-
Última visita
Reputação
17-
Pascal pilhas em modo gráfico
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
procedure TfrmCADEXE.BtnIncluirClick(Sender: TObject); begin pilha := Nil; begin if (pilha = Nil) then begin new(pilha); pilha^.Autor := EdtNome_Autor.Text; pilha^.Nome_da_Obra := EdtNome_Obra.Text; pilha^.QTD_Pg := EdtQtd_Pag.Text; pilha^.CEP_Autor := EdtCEP_Autor.Text; pilha^.proximo := nil; end else begin aux := pilha; while (aux^.proximo <> Nil) do new(novo); novo^.Autor := EdtNome_Autor.Text; novo^.Nome_da_Obra := EdtNome_Obra.Text; novo^.QTD_Pg := EdtQtd_Pag.Text; novo^.CEP_Autor := EdtCEP_Autor.Text; novo^.proximo := Nil; aux^.proximo := novo; end; end; ListBox1.Items.Add(pilha^.Autor + ' - ' + pilha^.Nome_da_Obra + ' - ' + pilha^.QTD_Pg + ' - ' + pilha^.CEP_Autor); EdtNome_Autor.Clear; EdtNome_Obra.Clear; EdtQtd_Pag.Clear; EdtCEP_Autor.Clear; end; procedure TfrmCADEXE.BtnRetirarClick(Sender: TObject); begin if (pilha = nil) then begin ShowMessage('Sem Livros para Retirar'); end; if (pilha <> nil) then begin aux := pilha; While(aux^.proximo <> nil) do begin penultimo := aux; aux := aux^.proximo; end; penultimo^.proximo := nil;// Aqui se encontra o erro Dispose(aux); end; end; Preciso que alguém mais experiente me dê uma luz. Não está excluindo no topo como deveria. Help - me -
Pascal pilhas em modo gráfico
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Observe as alterações: está excluindo no topo do grid. porém só acrescenta em cima da primeira linha. Estante_Virtual.zip -
Pascal pilhas em modo gráfico
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Olá galera. Utilizo o Lazarus IDEv1.8.2 - Tive a ideia de fazer uma Biblioteca Virtual tentando estruturar os dados em um tipo Pilha. Fiz em modo texto para poder visualizar a lógica. Mas quando tento implementar com button, edit, form e outros componentes não entendo onde entro com os ponteiros. Implementei uma primeira tela de menu e uma segunda de cadastro. A meta é fazer uma aplicação com alguma forma de estrutura(pilha,fila) com alocação dinâmica de memória contemplando o máximo de componentes(button, edit) do Lazarus. Grato por qualquer ajuda. empilha_livros - Copia.rar M_grafico.rar -
Pascal pilhas em modo gráfico
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Tenho um trabalho que implemente estrutura de dados (lista encadeada, pilha ) e ambiente gráfico ( buttons, text, mais de um form ). preciso de uma ideia para implementação. -
Pascal pilhas em modo gráfico
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
OK. Você tem algum exemplo em modo gráfico de alguma aplicação que trate de estrutura de dados. OU alguma ideia que eu passa tentar implementar. sou iniciante em pascal e tenho que entregar um trabalho sobre o assunto. -
Olá Estou dando meus primeiros passos com banco de dados mas estou tendo dificuldade de ligar O Lazarus ao banco, escolhi o SQLiteStudio só para me familiarizar mas não está rolando. Achei um exemplo para implementar é um sistema de cadastro de nomes e cidades , só que estou deixando passar algo. Grato por qualquer ajuda. A manipulação do banco neste inicio até que não tenho dificuldade, mas a ligação com o lazarus este sim é um problema.
-
Olá Bom dia. estudando sobre estrutura de dados, me deparei com um exemplo, encontrado na internet, em modo gráfico que demonstra a utilização de pilhas. O sistema é o seguinte: Digita-se o nome e a idade e (acredito eu) ao clicar em listar deveria aparecer em um listbox os dados digitados. porém, aparece (1-Nome:,Idade:) Estou encafifado com isso. Há pouco conteúdo em modo gráfico sobre assunto. Grato por qualquer ajuda unit1.zip project1.zip
-
Pascal Manipulação de arquivos de texto
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
desculpe. Não consegui evoluir na questão. -
Pascal Manipulação de arquivos de texto
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
help-me. Estou trancado, não sei se estou na caminho certo. É preciso criar um arquivo temporário? Só mais uma pergunta. Se o arquivo for em formato binário não é possível excluir parte da informação? somente todo o bloco de informação. correto? begin reset(arq); while not EOF(arq) do readln(arq,auto.modelo); i := 0; repeat //localiza o primeiro pipe existente da linha posicao := pos('|',auto.modelo ); if posicao = 0 then // se não existe pipe na string posicao := length(auto.modelo) + 1; //lê o resto da linha // armazena a parte da linha que corresponde ao campo campo[i] := copy(auto.modelo, 1,pred(posicao)); //elimina o campo lido da linha delete(auto.modelo, 1, posicao ); until (posicao >= length(auto.modelo)); end; -
Pascal Manipulação de arquivos de texto
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Olá Simon. Consegui escrever no arquivo de texto de forma mais organizada. por exemplo: Palio|Preto|5 portas|2018|2018 Gostaria de excluir somente a cor do exemplo acima. Palio|5 portas|2018|2018 ex: begin O que desejas excluir? 1-modelo 2-cor 3-ano readln(cor); for i := 1 to length(cor) do end. É por aqui? -
Pascal Manipulação de arquivos de texto
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Após algum trabalho consegui algum resultado, só não consegui excluir ou alterar somente a cor ou o modelo, apenas um. Consegui excluir/alterar toda a linha do arquivo no qual fica salvo as informações. Alguém pode dar uma luz. Código: program project1; uses crt, SysUtils; type cadastro = record modelo: string; cor: string; end; var arq: textfile; arq2: textfile; opcao, x, y: integer; auto: cadastro; linha: string; modeloatual, newmodel: string; begin Assignfile(arq, 'garagem.txt'); if (fileexists('garagem.txt') = False) then begin rewrite(arq); //abre arquivo end; repeat //////////////////////////////////////// textbackground(2); clrscr; textbackground(2); textcolor(7); writeln(' ====================================================='); gotoxy(3,2);textcolor(red+blink); writeln('+ GARAGEM SUAVE NA NAVE +'); textcolor(7); writeln(' ====================================================='); writeln; writeln; writeln(' SELECIONE UMA OPCAO '); writeln(' [1] Inserir Registro ' ); writeln(' [2] Ver registro ' ); writeln(' [3] Excluir Registro ' ); writeln(' [4] Alterar Registro ' ); writeln(' [5] Finalizar Sistema ' ); gotoxy (35,8); textcolor(red); textbackground(white); gotoxy (35,9); writeln('=============='); gotoxy (35,10); writeln('| OPCAO = |' ); gotoxy (35,11); writeln('=============='); gotoxy (45,10); gotoxy(1,29); writeln('Contato: [email protected]'); readln(opcao); textcolor(7); textbackground(2); /////////////////////////////////////// if (opcao = 1) then //inserir begin gotoxy(3,15); Write('Digite o nome do veiculo: '); readln(auto.modelo); gotoxy(3,15); Write('Digite a cor do veiculo: '); readln(auto.cor); Append(arq); //final do arquivo // writeln(arq, auto.modelo, '-' , auto.cor); writeln(arq, auto.modelo, auto.cor); Closefile(arq); clrscr; end; /////////////////////////////////// //listar if (opcao = 2) then begin gotoxy(3,15); reset(arq); //ABRE O ARQ while not EOF(arq) do begin readln(arq, auto.modelo); writeln(auto.modelo); end; writeln(''); writeln('Tecle <ENTER> para continuar '); readkey; closefile(arq); end; ////////////////////////////////// //excluir if (opcao = 3) then begin gotoxy(3,15); writeln('qual modelo desejas excluir:'); Assignfile(arq2, 'garagemaux.txt'); //cria arq tmp p/ excluir rewrite(arq2); readln(linha); reset(arq); //abre o arq no inicio while not EOF(arq) do //enquanto nao for o final do arquivo begin readln(arq, auto.modelo); begin if (auto.modelo <> linha) then begin append(arq2); writeln(arq2, auto.modelo); closefile(arq2); end; end; end; closefile(arq); deletefile('garagem.txt'); renamefile('garagemaux.txt', 'garagem.txt'); end; /////////////////////////////////////// //alterar if (opcao = 4) then begin gotoxy(3,15); Assignfile(arq2,'garagemaux.txt'); writeln('qual modelo desejas alterar: '); readln(modeloatual); gotoxy(3,15); writeln('qual o novo modelo: '); readln(newmodel); reset(arq); //abre o arq no inicio rewrite(arq2); //abrir arquivo preparando para escrever while not EOF(arq) do //enquanto nao for o final do arquivo begin readln(arq,auto.modelo); if (auto.modelo = modeloatual) then begin writeln(arq2,newmodel); end else begin writeln(arq2,auto.modelo); closefile(arq2); end; end; closefile(arq); deletefile('garagem.txt'); renamefile('garagemaux.txt','garagem.txt'); end; begin writeln(''); writeln('Aperte qualquer tecla para voltar ao menu'); clrscr; end; until (opcao = 5); end. -
Olá amigos. Estou com dificuldade em manipulação de arquivos de texto, mais precisamente no excluir e no alterar. Criei o projeto e o programa até cria o arq.aux (que é usado para excluir), mas não copia nada para ele e nem apaga o original. Alguém pode revisar para mim? Grato. Código: program project1; uses crt,sysutils; type cadastro = record modelo: string; cor : string; end; var arq : textfile; arq2: textfile; opcao : integer; auto : cadastro; linha : string; begin Assignfile(arq, 'garagem.txt'); Assignfile(arq2, 'garagemaux.txt'); //cria arq tmp p/ excluir if (fileexists ('garagem.txt') = false)then begin rewrite(arq); //abre arquivo closefile(arq); end; repeat writeln('1 - Inserir Registro '); writeln('2 - Ver Registros'); writeln('3 - Excluir Registro'); writeln('4 - Alterar registro'); writeln('5 - Sair'); readln(opcao); case opcao of //inserir 1 : begin write('Digite o nome do veiculo: '); readln(auto.modelo); write('Digite a cor do veiculo: '); readln(auto.cor); Append(arq); //final do arquivo writeln(arq, auto.modelo:10,auto.cor:10); Closefile(arq); clrscr; end; //listar 2 : begin reset(arq); //ABRE O ARQ while not EOF(arq) do begin readln(arq,auto.modelo,auto.cor); writeln(auto.modelo,auto.cor); end; readkey; closefile(arq); end; //excluir 3 : begin writeln('qual modelo desejas excluir: '); readln(linha); reset (arq); //abre o arq no inicio rewrite(arq2); while not (EOF(arq)=false) do //enquanto nao for o final do arquivo begin readln(arq,auto.modelo); if (linha <> auto.modelo) then begin writeln(arq2,auto.modelo); end; closefile(arq); closefile(arq2); erase(arq); rename(arq2,'garagem.txt'); end; end; //alterar // 4 : end; begin writeln(''); writeln('Aperte qualquer tecla para voltar ao menu'); clrscr; end; until (opcao = 5); Closefile(arq); end. teste.txt
-
Pascal Menu - utilizando funções e procedimentos
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Utilisei o seu exemplo em um outro projeto adaptando o código e me deparei com duas situações: A primeira é que gostaria que o cursor já iniciasse na primeira opção. A segunda é: como cadastrar a tecla <enter>.Eu até pensei o seguinte: begin if (opcao = 4) then opcao := '1'; end; //se a opção do usuário for a quarta linha então chamará a procedure correspondente à [1 - inserir.] Só que não funcionou. Ou pelo menos não apliquei a lógica de uma forma correta. Grato por qualquer ajuda. procedure menu; Var hora,min,seg,sec : word; l,a,opcao : integer; Begin textbackground(blue); clrscr; GetTime( hora,min,seg,sec); write(hora , ':' , min ); gotoxy(2,2); writeln(' //menu// '); writeln; writeln(' inserir '); writeln; writeln(' consultar '); writeln(); writeln(' modificar '); writeln; writeln(' ordenar por... '); writeln; writeln(' sair '); writeln; writeln('----------------------------'); Writeln(' Utilise as setas do teclado '); writeln('e tecle <ENTER> na opcao desejada'); repeat GotoXY(1,l); write(' -->'); a:=ord(readkey()); if a=80 then begin gotoxy(1,l); write(' '); l:=l+2; //faz o cursor pular de 2 em 2 linhas p/ baixo if (l>4)and(l > 12) then l:=4; end else if a=72 then begin gotoxy(1,l); write(' '); l:=l-2; //faz o cursor pular de 2 em 2 linhas p/ cima if l < 4 then l:=12; end; until a=13; opcao:=l-2; end; -
Pascal Menu - utilizando funções e procedimentos
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Grato, sem palavras para agradecer. Você tem mais alguma sugestão para acrescentar ao projeto que tire a ideia de DOS principalmente ou uma dica de estudo. -
Pascal Menu - utilizando funções e procedimentos
gilmar.vicente respondeu ao tópico de gilmar.vicente em Programação - outros
Grato pelas observações, foi difícil mas está funcionando:inserindo,listando,maior,menor e maior que 100. Realmente tive extrema dificuldade neste conteúdo, agora gostaria de mudar a aparência trabalhar com goto(xy), gostaria de ao invés de digitar um numero para escolher a opção do menu, fosse com as setas p/cima e p/ baixo e teclando ENTER. Ainda bem que temos opções de aprendizado fora da escola. Obrigado por seu tempo e paciência. teste.txt
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais