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

fed07

[DUVIDA] pascal base de dados

5 mensagens neste tópico

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) :biggrin:

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;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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) :biggrin:

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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora