Avatar billede sorenriis Nybegynder
02. august 2004 - 22:58 Der er 12 kommentarer og
2 løsninger

Brugersystem i Delphi 6

Jeg er endnu engang gået fast.

Sagen er den at jeg skal have lavet en form for brugersystem i det program jeg arbejder på.

Jeg har 3 tekstboxe, som indeholder navn, password og en sti til en bestemt fil.

Jeg vil gerne lave det sådan at første gang programmet startes, er disse 3 felter tomme. Nu skal brugeren så have mulighed for at indtaste de rigtige, hvorefter at have mulighed for at gemme de 3 oplysninger ved at trykke på en knap.
Desuden skal det være sådan at næste gang programmet startes, så er de oplysninger gemt, således at man ikke igen skal indtaste navn, kodeord og finde den rigtige sti, hver gang programmet startes.

Jeg forestiller mig noget med at oplysningerne skal gemmes i en txt-fil (med mindre det er muligt at lave en lille database i delphi, hvor de oplysninger ligger gemt - og hvor det er muligt at rette i de oplysninger), hvor det er muligt at ændre på værdierne (hvis brugeren nu f.eks. flytter filen, så skal det være muligt finde den nye sti og gemme den information igen).

Håber det er nogenlunde til at forstå - spørg endelig, hvis der er uklarheder.

På forhånd tak,
Søren
Avatar billede stoney Nybegynder
03. august 2004 - 07:43 #1
Vil du have gemt den i en .ini, .txt eller access .MDB fil ?

Hvad er meningen med et password, hvis brugeren ikke bliver promtet for det ?

Stoney
Avatar billede hrc Mester
03. august 2004 - 08:30 #2
Tror nok at de facto definitionen på et brugersystem er noget der hedder Windows, Linux, MacOS eller DOS - men hvad ved jeg..

Du vil gerne have en til at lave et program der kan gemme tre oplysninger i en tekstfil - men hvad med passwordet? Er det så ikke direkte læsbart?

Jeg har lavet et lille program der gemmer og læser fra en binær fil. Når programmet startes så indlæses hele listen (der tjekkes ikke om nye allerede findes, når man adder). Et simpelt lille program, men da jeg ikke helt er klar over graden af "færdighed" så kan du få det her - skal også videre med mit arbejde...

Alle linierne (filerne) vises i et sortérbart listview hvor man kun kan rette i sti password.

Hvis interesse så er min email hrc_public at hotmail.com
Avatar billede pjotre Novice
03. august 2004 - 09:27 #3
Prøv dette:
procedure TForm1.FormCreate(Sender: TObject);
var
  FILI: textfile;
  FILNAVN: string;
  INREC: string[255];
begin
  brugerid.text := '';
  password.text := '';
  FILNAVN := 'xxx.ini';
  try assignfile(FILI, FILNAVN)
  except
    exit;
  end;
  Reset(FILI);
  while not Eof(FILI) do
  begin
    Readln(FILI, INREC);
    if copy(INREC, 1, 2) = 'id' then
      brugerid.text := copy(inrec, 3, length(inrec) - 2);
    if copy(INREC, 1, 2) = 'pw' then
      password.text := copy(inrec, 3, length(inrec) - 2);
  end;
  CloseFile(FILI);
end;

procedure TForm1.okClick(Sender: TObject);
var
  FILI: textfile;
  FILNAVN: string;
  INREC: string[255];
begin
  FILNAVN := 'xxx.ini';
  assignfile(FILI, FILNAVN);
  Rewrite(FILI);
  writeln(FILI, 'id' + brugerid.text);
  writeln(FILI, 'pw' + password.text);
  CloseFile(FILI);
end;
Mvh Pjotre
Avatar billede sorenriis Nybegynder
03. august 2004 - 11:08 #4
Altså
Det er totalt ligegyldigt om man (efter at password, navn og sti er indtastet første gang) kan se dem.

Det eneste dette skal sikre er at personen der har downloaded programmet er blandt de personer som jeg har givet det password, som kan "aktivere" programmet.

Om man så efterfølgende kan se det password, betyder ikke så meget...
Avatar billede sorenriis Nybegynder
03. august 2004 - 11:12 #5
Hvad er fordelen ved en access.mdb-fil?

Og er det simpelt at lave det jeg gerne vil med en access-fil?
Avatar billede pjotre Novice
03. august 2004 - 11:20 #6
Er det et flerbruger system, hvor du f.eks. har oprettet alle brugerne i en eller anden fil.
Når brugeren starter programmet, skal han først logger på, du skal da checke om han er oprettet for at kunne benytte systemet?
Pjotre
Avatar billede sorenriis Nybegynder
03. august 2004 - 11:28 #7
Pjotre:
Nej - det var ikke meningen.. Meningen var bare at der skulle være et password som duede. Og hvis man har det rigtige password, så kan man bruge programmet...
Avatar billede sorenriis Nybegynder
03. august 2004 - 11:32 #8
Ang. din kode Pjotre.
Den laver filen som den skal, men jeg kan ikke lige få den til at læse tingene ind ved programstart.

procedure TForm1.FormCreate(Sender: TObject);
var
FILI: textfile;
FILNAVN: string;
INREC: string[255];
begin
  navn.text := '';
  kodeord.text := '';
  bchsti.Text := '';
  FILNAVN := 'config.ini';
  try assignfile(FILI, FILNAVN)
  except
    exit;
  end;
  Reset(FILI);
  while not Eof(FILI) do
  begin
    Readln(FILI, INREC);
    if copy(INREC, 1, 2) = 'Navn=' then
      navn.text := copy(inrec, 3, length(inrec) - 2);
    if copy(INREC, 1, 2) = 'Kodeord=' then
      kodeord.text := copy(inrec, 3, length(inrec) - 2);
    if copy(INREC, 1, 2) = 'BCH-Sti=' then
      bchsti.text := copy(inrec, 3, length(inrec) - 2);
  end;
  CloseFile(FILI);

-----

Config.ini-filen ser således ud:

Navn=Riis
Kodeord=test
BCH-Sti=test

Hvad er det lige jeg gør galt?
Avatar billede pjotre Novice
03. august 2004 - 11:39 #9
Du skal rette copy, som har følgende syntax; Copy(feltnavn, start pos, længde)

Ret til følgende:

if copy(INREC, 1, 5) = 'Navn=' then
      navn.text := copy(inrec, 3, length(inrec) - 5);
    if copy(INREC, 1, 8) = 'Kodeord=' then
      kodeord.text := copy(inrec, 3, length(inrec) - 8);
    if copy(INREC, 1, 8) = 'BCH-Sti=' then
      bchsti.text := copy(inrec, 3, length(inrec) - 8);
Avatar billede pjotre Novice
03. august 2004 - 11:41 #10
Start pos. var forkert - de rigtige er her:

if copy(INREC, 1, 5) = 'Navn=' then
      navn.text := copy(inrec, 6, length(inrec) - 5);
    if copy(INREC, 1, 8) = 'Kodeord=' then
      kodeord.text := copy(inrec, 9, length(inrec) - 8);
    if copy(INREC, 1, 8) = 'BCH-Sti=' then
      bchsti.text := copy(inrec, 9, length(inrec) - 8);
Avatar billede hrc Mester
03. august 2004 - 12:18 #11
riis2002: Er du ikke interesseret i min løsning? Det er blevet helt homogent og jeg tror du kan bruge det (desuden brugte jeg alt for megen tid på det i morges ...)
Avatar billede sorenriis Nybegynder
03. august 2004 - 12:20 #12
hrc= Jo - den havde jeg lige overset...
Du kan bare sende til riis2002'snabela'hotmail.com (som iøvrigt er min MSN adresse også, hvis du vil sende den vej)
Avatar billede sorenriis Nybegynder
03. august 2004 - 14:46 #13
Hvorfor er det lige det her ikke virker?

procedure TForm1.GemClick(Sender: TObject);
var
FILI: textfile;
FILEN: string;
begin
  FILEN := 'config.ini';
  assignfile(FILI, FILEN);
  Rewrite(FILI);
  writeln(FILI, 'Navn=' + navn.text);
  writeln(FILI, 'Kodeord=' + kodeord.text);
  writeln(FILI, 'BCH-Sti=' + bchsti.text);
  writeln(FILI, 'LOG-Sti=' + logsti.text);
  CloseFile(FILI);
end;
Avatar billede sorenriis Nybegynder
03. august 2004 - 15:43 #14
problemet er løst:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester