Jump to content
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

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.