Problème passage morceau de programme en procedure
Fermé
yann_214
Messages postés11Date d'inscriptionsamedi 1 décembre 2012StatutMembreDernière intervention12 décembre 2012
-
12 déc. 2012 à 22:54
Bonjour,
Je travaille sur un projet qui nécessite une entrée de pseudo.
Ce pseudo est entré dans un fichier texte que j'ai appelé BDD suivi d'un score de base (0).
Le programme pour le moment, lorsqu'on lui donne un pseudo, vérifie qu'il n'existe pas déjà et l'inscrit dans ce BDD. S'il s'y trouve déjà, alors il demande d'entrer un nouveau pseudo et reverifie.
Mon programme est en deux parties , la vérification de la présence ou non dans la base de donnée et la seconde ce qu'il se passe dans chacun des cas.
La premiere partie, la vérification est une fonction.
Dans le cas ou la second partie est dans mon programme principal , alors ca fonctionne ( quoique parfois ca admet un doublon =/ ), et quand je veux le remettre en procédure , rien n'y fait , ca ne fonctionne pas.
interface
function testpseudo(pseudo:string) : boolean;
procedure AfficherResTestPseudo(testpseudo:boolean);
implementation
function testpseudo(pseudo:string) : boolean;
var
bdd :text;
ligne : string;
test : boolean;
begin
assign(bdd, 'bdd.txt');
reset(bdd);
test:=true;
while (test=false or (not eof(bdd))) do
begin
readln(bdd, ligne);
if pseudo=ligne then
test:= false
else
test:= true ;
readln(bdd, ligne);
end;//fin while testpseudo <> false
close(bdd);
testpseudo:=test;
end;
procedure AfficherResTestPseudo(testpseudo:boolean);
var
bdd : text;
ligne : string;
pseudo : string;
points : integer ;
testemp : boolean;
pseudOK : boolean;
begin
while pseudOK<>true do
begin
readln(pseudo);
writeln(testpseudo);
testemp:=testpseudo;
case testemp of
true : begin
writeln('Pseudo correct');
points:=0;
assign(bdd, 'bdd.txt');
append(bdd);
writeln(bdd, pseudo);
writeln(bdd, points);
close(bdd);
pseudOK:=true;
end;
false : begin
writeln('pseudo deja pris');
writeln('Essayez avec un nouveau pseudo');
pseudOK:=false;
end;
end; //end case
end; //end while
end;
end.
PROGRAMME PRINCIPAL
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in 'Unit1.pas';
var
pseudo : string;
begin
AfficherResTestPseudo(testpseudo(pseudo));
readln;
end.
Deuxieme , fonction et programme principal , fonctionne (avec un doublon de temps en temps :/ )
unit Unit1;
interface
function testpseudo(pseudo:string) : boolean;
implementation
function testpseudo(pseudo:string) : boolean;
var
bdd :text;
ligne : string;
test : boolean;
begin
assign(bdd, 'bdd.txt');
reset(bdd);
test:=true;
while (test=false or (not eof(bdd))) do
begin
readln(bdd, ligne);
if pseudo=ligne then
test:= false
else
test:= true ;
readln(bdd, ligne);
end;//fin while testpseudo <> false
close(bdd);
testpseudo:=test;
end;
end.
PROGRAMME PRINCIPAL
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in 'Unit1.pas';
var
bdd : text;
ligne : string;
pseudo : string;
points : integer ;
testemp : boolean;
pseudOK : boolean;
begin
while pseudOK<>true do
begin
readln(pseudo);
writeln(testpseudo(pseudo));
testemp:=testpseudo(pseudo);
case testemp of
true : begin
writeln('Pseudo correct');
points:=0;
assign(bdd, 'bdd.txt');
append(bdd);
writeln(bdd, pseudo);
writeln(bdd, points);
close(bdd);
pseudOK:=true;
end;
false : begin
writeln('pseudo deja pris');
writeln('Essayez avec un nouveau pseudo');
pseudOK:=false;
end;
end; //end case
end; //end while
readln
end.
Merci d'essayer de m'aider et d'avoir pris le temps de me lire.
A voir également:
Problème passage morceau de programme en procedure