[Pascal] Zagwiazdkowane Hasło

0

Tworze właśnie program w Pascalu, który modyfikuje rejestr na życzenie. Nie wiem tylko, jak sobie poradzić z jednym problemem: podczas uruchamiania programu, trzeba wpsac hasło, a nie wiem jak zrobić, żeby przy wprowadzeniu było zagwiazdkowane : (chodzi o to, żeby nie było widać, co jest wprowadzane ). Prosiłbym o pomoc, lub ewentualne odesłanie do jakiegoś kursu Pascala.

0

qrde co jest ? Caly kod:

program haslo_wejscia;
uses okna,crt,b_crt;
const
esc = #27;
enter = #13;
bckspace = #8;
gwiazdka = #42;
F12 = #134;
var
a,b,s,nw,sw,haslo,linia:string;
c,swc,nwc:char;
f:text;

procedure PiszGwiazdki(s:string);
var
i : byte;
begin
GotoXY(14,1);
for i:=1 to Length(s) do Write('*');
Write(' ',#8);
end;

procedure PiszGwiazdkisw(sw:string);
var
i : byte;
begin
GotoXY(19,1);
for i:=1 to Length(sw) do Write('*');
Write(' ',#8);
end;

procedure PiszGwiazdkinw(nw:string);
var
i : byte;
begin
GotoXY(19,1);
for i:=1 to Length(nw) do Write('*');
Write(' ',#8);
end;

procedure zla_wartosc;
begin
end;

procedure zmiana_hasla;
begin
Repeat;
ClrScr;
Assign(f,'conf.txt');
{$I-}
Reset(f);
{$I+}
ReadLn(f,linia);
Close(f);
WindowOpen(18,18,65,20,lightgray);
WindowAttr(lightgray,red);
WindowWriteXY(1,1,'Podaj stare haslo:');
GotoXY(19,1);
sw:='';
repeat
swc:=Readkey;
case swc of
' '..'z' : sw:=sw+swc;
#8 : sw:=Copy(sw,1,Length(sw)-1);
end;
PiszGwiazdkisw (sw);
until (swc=esc) or (swc=enter);
if (swc=esc) then sw:='';
{if (sw>linia) or (sw!2;
{ Append(plik);
WriteLn(plik,#32+s);
Close(plik); }
end;
end;

procedure has;
begin
CheckBreak:=(false);
repeat;
ClrScr;
Assign(f,'conf.txt');
{$I-}
Reset(f);
{$I+}
if IOResult0 then begin
WindowClose(true);
TextAttr:=LightRed+Blink;
ClrScr;
WriteLn('BRAK ZBIORU Z HASLEM - NIE WLACZYSZ KOMPUTERA!');
repeat
Sound(550);
Delay(100);
NoSound;
Delay(200);
until 1>2;
end;
ReadLn(f,linia);
Close(f);

WindowOpen(18,18,65,20,lightgray);
WindowAttr(lightgray,red);
WindowWriteXY(1,1,'Podaj haslo:');
GotoXY(14,1);
s:='';
repeat
  c:=ReadKey;
  case c of
    ' '..'z' : s:=s+c;
    #8 : s:=Copy(s,1,Length(s)-1);
    #134  : zmiana_hasla;
  end;
  PiszGwiazdki(s);
until (c=esc) or (c=enter);
if (c=esc) then s:='';
a:='1';
b:='2';
if (s=linia) or (s='zmiana') or (s='wytluk') or (s='Tomek') then a:=b else ZapiszDoPliku;
if (s='zmiana') then zmiana_hasla;

until (s=linia) or (s='wytluk') or (s='Tomek');
ClrScr;
WindowClose(true);
end;

begin
TextAttr:=LightGray;
ClrScr;
has;
end.

0

Troche to dlugie - nie da sie kr<font color="red">[b]u[/b]</span>cej ??

0

Gosciu, czlowiek sie meczy, mysli, pisze, a Ty wyskakujesz z tekstem ze za duzo. Wstydz sie :d

0

program haslo_wejscia;
uses okna,crt,b_crt;
const
esc = #27;
enter = #13;
bckspace = #8;
gwiazdka = #42;
F12 = #134;

Co to za moduly ?? Skad je wziac ??

0

Kod komputerowy(moze jaki ASCII, nie wiem dokladnie ;-) ) klawisow na klawiatorze :-8

0

Dzięki, ale żeczywiście programik jest trochę przydługawy :).

0

function podajhaslo(MaxDl:integer):string;
var s:string;
z:char;
begin
s := '';
repeat
z := readkey;
if (z <> #13) and (z <> #8) and (length(s) < MaxDl) then
begin
s := s + z;
write(#42);
end;
if (z = #8) and (length(s) > 0) then
begin
delete(s,length(s),1);
gotoxy(wherex-1,wherey); write(#32);
gotoxy(wherex-1,wherey);
end;
until z = #13;
podajhaslo := s;
end;

Pisalem z glowy wiec moze byc zle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1