Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
fed07

[DUVIDA] pascal base de dados

Recommended Posts

fed07

Boas pessoal, então é assim eu tou a fazer um programa em pascal para avaliação de nota, o programa consiste em uma base de dados para uma oficina.

Mas como nem tudo na vida são rosas estou com um grande problema e nao sei mesmo o que fazer lol...

No programa existe uma opção que é a de criar um novo cliente, nessa opção metemos os dados e ele deveria de guardar esses mesmo dados num ficheiro, coisa que nao acontece e eu nao sei porque  :wallbash:, vou colocar aqui parte do código onde eu penso que esteja o erro, se conseguirem ajudar agradecia

thkz!

PS: o programa corre bem, utilizava o turbo pascal e agora o free pascal (caso desaconselhem digam) :cheesygrin:

program oficina;
uses crt;

type cliente = RECORD
Nome : string;
Idade : integer;
Morada : string;
Contacto : longint;
Modelo : string; {do carro}
Marca : string; {do carro}
revisao : string;
matricula : string;
BI : string;
NIF : string;
chasis : string;
end;

var opcao : char;
info_cliente,backup : file of cliente;
password, nome_cliente : string;
cliaux : cliente;



{esta função aqui para quem nao percebe, o que faz é criar o ficheiro caso ele nao exista, se existir simplesmente o abre para leitura. talvez esteja aqui o erro?¿}
function Ini : integer;
begin
clrscr;
assign(info_cliente,'C:\cliente.bin');
{$I-}
reset(info_cliente);
{$I+}
if IOResult <> 0 THEN
begin
rewrite(info_cliente);
close(info_cliente);
end;
end;










procedure novo; {criar novo cliente}
var fileaux : text;
path,mat,ext : string;

begin
clrscr;
reset(info_cliente);

{aqui pede os dados para a criação de um novo cliente}

Writeln('Insira o nome do cliente');
readln(cliaux.nome);
writeln('Insira a idade do cliente');
readln(cliaux.idade);
writeln('Insira a morada do cliente');
readln(cliaux.morada);
writeln('Insira o contacto do cliente');
readln(cliaux.contacto);
writeln('Insira o número de BI');
readln(cliaux.bi);
writeln('Insira o número de NIF');
readln(cliaux.nif);
writeln('Insira a data de revisão do veículo em dd/mm/aa');
readln(cliaux.revisao);
writeln('Insira a marca do veículo do cliente');
readln(cliaux.marca);
writeln('Insira o modelo do veículo do cliente');
readln(cliaux.modelo);
writeln('Insira a matricula do veículo no formato XX-XX-XX');
readln(cliaux.matricula);
writeln('Insira o número de chasis do veículo');
readln(cliaux.chasis);


{esta variavel path é apenas para criar o nome do caminho do ficheiro}
path:='C:\Rep\';
mat:=cliaux.matricula;
ext:='.txt';
path:=path+mat+ext;

{este fileaux é para criar um ficheiro de texto onde se escreve as reparações do carro, nao tá aqui essa parte do código, mas isto também nao deve ser o problema}
assign(Fileaux,path);
rewrite(Fileaux); {cria o ficheiro de texto}
close(Fileaux);


{isto aqui supostamente deveria passar os dados da variavel cliaux para o ficheiro do tipo cliente..}
while not eof(info_cliente) do
begin
write(info_cliente,cliaux);
close(info_cliente);
end;
end;

Share this post


Link to post
Share on other sites
vasco16

Boas pessoal, então é assim eu tou a fazer um programa em pascal para avaliação de nota, o programa consiste em uma base de dados para uma oficina.

Mas como nem tudo na vida são rosas estou com um grande problema e nao sei mesmo o que fazer lol...

No programa existe uma opção que é a de criar um novo cliente, nessa opção metemos os dados e ele deveria de guardar esses mesmo dados num ficheiro, coisa que nao acontece e eu nao sei porque  :wallbash:, vou colocar aqui parte do código onde eu penso que esteja o erro, se conseguirem ajudar agradecia

thkz!

PS: o programa corre bem, utilizava o turbo pascal e agora o free pascal (caso desaconselhem digam) :cheesygrin:

program oficina;
uses crt;

type cliente = RECORD
Nome : string;
Idade : integer;
Morada : string;
Contacto : longint;
Modelo : string; {do carro}
Marca : string; {do carro}
revisao : string;
matricula : string;
BI : string;
NIF : string;
chasis : string;
end;

var opcao : char;
info_cliente,backup : file of cliente;
password, nome_cliente : string;
cliaux : cliente;



{esta função aqui para quem nao percebe, o que faz é criar o ficheiro caso ele nao exista, se existir simplesmente o abre para leitura. talvez esteja aqui o erro?¿}
function Ini : integer;
begin
clrscr;
assign(info_cliente,'C:\cliente.bin');
{$I-}
reset(info_cliente);
{$I+}
if IOResult <> 0 THEN
begin
rewrite(info_cliente);
close(info_cliente);
end;
end;










procedure novo; {criar novo cliente}
var fileaux : text;
path,mat,ext : string;

begin
clrscr;
reset(info_cliente);

{aqui pede os dados para a criação de um novo cliente}

Writeln('Insira o nome do cliente');
readln(cliaux.nome);
writeln('Insira a idade do cliente');
readln(cliaux.idade);
writeln('Insira a morada do cliente');
readln(cliaux.morada);
writeln('Insira o contacto do cliente');
readln(cliaux.contacto);
writeln('Insira o número de BI');
readln(cliaux.bi);
writeln('Insira o número de NIF');
readln(cliaux.nif);
writeln('Insira a data de revisão do veículo em dd/mm/aa');
readln(cliaux.revisao);
writeln('Insira a marca do veículo do cliente');
readln(cliaux.marca);
writeln('Insira o modelo do veículo do cliente');
readln(cliaux.modelo);
writeln('Insira a matricula do veículo no formato XX-XX-XX');
readln(cliaux.matricula);
writeln('Insira o número de chasis do veículo');
readln(cliaux.chasis);


{esta variavel path é apenas para criar o nome do caminho do ficheiro}
path:='C:\Rep\';
mat:=cliaux.matricula;
ext:='.txt';
path:=path+mat+ext;

{este fileaux é para criar um ficheiro de texto onde se escreve as reparações do carro, nao tá aqui essa parte do código, mas isto também nao deve ser o problema}
assign(Fileaux,path);
rewrite(Fileaux); {cria o ficheiro de texto}
close(Fileaux);


{isto aqui supostamente deveria passar os dados da variavel cliaux para o ficheiro do tipo cliente..}
while not eof(info_cliente) do
begin
write(info_cliente,cliaux);
close(info_cliente);
end;
end;

Exprimenta criar um ficheiro manualmente da directoria onde queres guardar os dados.. para ver se ele manda para lá os dados..

Share this post


Link to post
Share on other sites
fed07

ele cria o ficheiro para guardar os dados, o problema é que nao guarda lá nada, nao consigo perceber msm o problema... 🤔

Share this post


Link to post
Share on other sites
M6

Creio que estás a fechar o ficheiro antes da escrita.

O comando close(Fileaux); deve estar depois de escreveres os dados no ficheiro.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.