Problème passage morceau de programme en procedure

Fermé
yann_214 Messages postés 11 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 12 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.



voici mes deux essais :

-(fonction+ procedure : fonctionne pas)
Unitunit Unit1;

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.