Delphi 7 Personal - Jak zrobić rejestrację do programu?

0

Witam,

Od niedawna programuję w Delphi. Chciałbym się jak powinien wyglądać kod źródłowy rejestracji do programu. Chodzi dokładnie o to, że mam logowanie do programu, ale chciałbym aby możliwa była rejestracja do programu przez niezależne mi osoby. Słyszałem, że program powinien tworzyć plik tekstowy z listą użytkowników wraz z hasłami, którą będzie automatycznie wczytywał i sprawdzał podczas logowania, ale nie wiem jak to zrobić.

Pozdrawiam
S_lawex

0

Zobacz sobie kod programu, który wrzucilem już kiedyś pod ten adres:
http://www.mediafire.com/file/lmrnnpyca633114/kartoteka_14.rar link
nie wygaśnie także spokojnie możesz pobrać. Tylko Ty zamiast e-maila
czy miasta możesz zapisywać tylko nazwę użytkownika oraz hasło. A i
oczywiście tekstowy format nie za bardzo się do tego nadaje - zamiast
niego proponuję spakować chociaż plik zlibem albo go zaszyfrowac, no
a jak to zrobić, pokazane jest na masie stron do znalezienia w google.
Okienko do logowania czy dodawania użytkowników to już tylko Ciebie
ogranicza Twoja inwencja. Ja w jednym programie dla Brata, zrobiłem
to tak, że userzy i ich hasła oraz inne dane są wczytywane z pliku i po
uruchomieniu program pozwala wybrać użytkownika z ComboBoxa, no
a pod spodem jest edit na wpisanie hasła. Natomiast przytrzymanie w
tym oknie przez dłuższa chwilę kombinacji Ctrl + F12 - pokazuje inne
okienko do wpisania hasła administratora, jeżeli to jest prawidłowe to
pokże się formatka - z ustawieniami programu i dodawaniem userów.

0

Nie łapię się zbytnio w twoim programie. Wsadzę wycinki programu dotyczące tego:

 procedure TForm1.Button1Click(Sender: TObject); //(*Po Przyciśnięciu przycisku Logowania*)//
begin
if (edit1.text = 'A') and (edit2.Text = 'QWERTYUIOP' ) then
form2.showmodal; //(*dalsza część programu*)//
else
begin
form14.showmodal; //(*Wiadomość błędu*)//
end;
end;

procedure TForm1.Button2Click(Sender: TObject); //(*Po przyciśnięciu przycisku Rejestrowania się*)//
begin
form21.showmodal;
end;

I teraz pytanie jak zapisywać do pliku Login i Hasło wpisane w Edit1 i Edit2, oraz jak w miejscu

 if (edit1.text = 'A') and (edit2.Text = 'QWERTYUIOP' ) then

zrobić, żeby odczytywało Login i Hasło z pliku.

0

nie znasz podstaw programowania. poczytaj jakies kursy najpierw a dopiero potem baw sie w "powazniejsze rzeczy".
ale wracajac do Twojego pytania... jak chcesz do pliku to mozesz uzyc:
plikow ini lub plikow typowalnych.
mozesz tez zapisac dane do rejestru.
o rezte pytaj googli lub w dziale Newbie.

0

heh, to twoj kod Olesio ?
ja bym sie wstydzil takie cos w net puszczac :D

0

@xyz: kod jest modyfikowany przeze mnie na podstawie programu Kartoteka autorstwa
Adama Boducha. Kod może nie jest idealny, lecz nikt nie odpowiedzial konkretnie, a po
lekturze kluczowego kodu pytający powinien zrozumieć jak zapisać dane do Streamów.
A jeżeli znasz ładniejsze rozwiązanie, to pochwal się kodem, którego się nie wstydzisz.

0

Pytający to w ogóle powinien zacząć od podstaw http://www.delphibasics.co.uk/

0

Trochę nudziło mi się zrobiłem gotowca opartego na pliku INI. Program zakłada, że jeżeli jest uruchomiony na prawach administratora systemu to nie trzeba się logować. Tylko administrator może dodawać i usuwać użytkowników więc program co najmniej raz musi być uruchomiony na prawach admina, który jak zakładam instaluje program w systemie. Nie chciało mi się robić takich rzeczy jak zmiana hasła, pobranie listy wszystkich użytkowników np. do combobox, bo to przykład w razie potrzeby można to bez problemu dorobić.
Daję link do projektu bo trochę tego kodu jest (3 unity i zmiany w DPR).

http://www.mediafire.com/?c6arrprbomg5w97

0

Dzięki. Trochę mi to pomogło. Na razie tylko ty i olesio próbujecie mi pomóc :) Mam jedynie pytanko co do tego programu, a mianowicie, gdy najpierw na administratorze uruchamiam program, tworzę konto np "login" z hasłem "haslo". Następnie przechodzę na zwykłego użytkownika i gdy próbuję zalogować się poprzez ten login i hasło wyświetla błąd, iż jest błędny login lub hasło.

0

Bo jestem leniem i nie myślę co pisze (a później nawet nie sprawdzam - nie chciało mi się logować na usera) Tam jest błąd w funkcji GetINIPath
źle to zaprojektowałem przecież program gdy jesteś zalogowany jako administrator odczytuje ścieżkę do katalogu Dane aplikacji jako w Windows XP np.:
c:\Documents and Settings\Administrator\Dane aplikacji
i tam zapisuje plik z danymi użytkowników
a jak logujesz się na koncie usera
to przecież funkcja SHGetSpecialFolderPath zwróci ścieżkę np.:
c:\Documents and Settings\Adam\Dane aplikacji
a więc nie ma tam pliku z danymi (bo na koncie admina był zapisany gdzie indziej.
Jednym słowem trzeba poprawić ten fragment kodu myślę że sobie poradzisz ale jak by co to pisz.

//pobranie sciezki do pliku ini z użytkownikami
function GetINIPath: string;
var
  buf: array[0..MAX_PATH] of Char;
begin
  ZeroMemory(@buf, SizeOf(buf));
  SHGetSpecialFolderPath(0, buf, CSIDL_COMMON_APPDATA, False); //<-- tu był bład zamiast CSIDL_APPDATA ma być CSIDL_COMMON_APPDATA
  result:= buf;
  result:= result + '\' + Application.Title;
  ForceDirectories(result);
  result:= result + '\users.dat';
end;

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