mam problem z wczytaniem po sobie dwóch zmiennych typu String. Docelowo program miał by prosić użytkownika o podanie 2 razy tego samego hasła i gdy obydwa będą jednakowe zapisać je do pliku. Problem jest w tym, że gdy wczytuję pierwszą zmienną i potwierdzam klawiszem ENTER to dalej następuje wyświetlenie instrukcji Write i nic więcej dla innych typów np. LongInt działa poprawnie ale hasło mialo by zawierać litery i cyfry. Kompilator to FreePascal 2.0.4 na Windows Vista Home Premium (pod XP także nie działa)
Uses Crt;
Var
configs:text;
P1Haslo,P2Haslo:LongInt;
Begin
Repeat
Clrscr;
Write('Ustawainie hasła do bazy danych.');
Writeln;
Write('Podaj hasło: ');
Read(P1Haslo);
Writeln;
Write('Podaj ponownie hasło: ');
Read(P2Haslo);
Writeln;
IF P1Haslo <> P2Haslo Then Write('Hasła nie są jednakowe podaj ponownie');
Until P1Haslo = P2Haslo;
Assign(configs,'G:\config.dan');
Rewrite(configs);
WriteLn(configs,P1Haslo);
Close(configs);
Writeln;
Write('Hasło zostało zapisane.');
ReadKey;
End.
Po pierwsze to mogłeś zastosować writeln zamiast write i po tym puste writeln. Co do kodu to nie mam jak przetestować (64 bitowa Vista), jednak na pierwszy rzut oka wydaje się dobry. PS. Próbowałeś inne typy zmiennych?
Jak już wcześniej napisałem działa na LongInt ale nie można podać liter. Co do Write i Writeln to są elementy “kosmetyczne” jeszcze do poprawienia i masz racje, to będzie poprawione.
if P1Haslo=P2haslo then
Assign(configs,'G:\config.dan');
Rewrite(configs);
WriteLn(configs,P1Haslo);
Close(configs);
Writeln;
Write('Hasło zostało zapisane.');
ReadKey;
until
writeln ('Wpisane hasła nie są jednakowe. Proszę wpisać ponownie hasła');
a zamiast reapeat użyłbym polecenia procedure
Może ci to coś pomoże, Ja dawno w Pascalu nie siedziałem i trochę mi się ulotniło.
jedynym błędem jest stosowanie przez Ciebie z read zamiast readln przy wczytywaniu hasła. zastosowanie write zamiast writeln uważam za odpowiednie ponieważ po wyświetleniu prośby o podanie hasła wpisywane hasło znajduje się w tej samej linii a po wywołaniu readln i tak przejdzie do następnej. reszta kodu jest oki.