![]() |
vergleich mit einer txt datei
Hallo leute, da ihr mir beim letzten mal so gut geholfen habt, würde ich euch nochmal bitten euch diesen Quellcode anzusehen und mir da ein bisschen zu helfen.
danke schon mal im voraus
Delphi-Quellcode:
[edit=Sharky]Delphi-Tags eingefügt. Mfg, Sharky[/edit]
procedure TForm1.Button1Click(Sender: TObject);
var PasswortList, UsernameList : TStringList; i, n, l, j: integer; begin PasswortList:= TStringList.Create; PasswortList.LoadFromFile('D:\Delphi\De2\Formular2.11\Login.txt'); for j := 0 to length(PasswortList[j]) - 1 do begin if form1.Edit2.Text = Copy(PasswortList[j], n, l) then end; UsernameList:= TStringList.Create; UsernameList.LoadFromFile('D:\Delphi\De2\Formular2.11\Login.txt'); for I := 0 to length(UsernameList[i]) - 1 do begin if form1.Edit1.Text = Copy(UsernameList[i], n, l) then end; ShowMessage('Erfolgreich eingelogt'); if form1.Edit1.Text = Copy(UsernameList[i], n, l) then begin if form1.Edit2.Text = Copy(PasswortList[j], n, l) then ShowMessage('Leider falsch. Versuch es bitte nochmal.'); zaehler:= zaehler + 1; end; if zaehler >= 3 then begin Form1.Close; end; UsernameList.Free; PasswortList.Free; loginzeit:= TimeToStr(now); |
Re: vergleich mit einer txt datei
Was ist denn das konkrete Problem?
|
Re: vergleich mit einer txt datei
das programm sagt: EStringError mit der Meldung 'Listenindex überschreitet das Maximum'
und ich nicht auf die txt datei zugreifen und die daten mit den edit.felder vergleichen |
Re: vergleich mit einer txt datei
- Du lädst dieselbe Datei in 2 verschiedene Stringlisten, wozu?
- Nicht Length(Stringliste) sondern Stringliste.Count - "then end;" macht keinen Sinn - Benutze try-finally-Blöcke, um Speicherlecks zu vermeiden - Die Variablen "l" und "n" sind nicht initialisiert Mehr ist mir auf den ersten Blick nicht aufgefallen. |
Re: vergleich mit einer txt datei
macht sinn.
probier ich gleich mal aus |
Re: vergleich mit einer txt datei
Jetzt sagt mir das programm aber dass er auf die eigenschaft 'count' nicht zugreifen kann
|
Re: vergleich mit einer txt datei
Zeig Code!
Gruß K-H |
Re: vergleich mit einer txt datei
FileList:= TStringList.Create;
FileList.LoadFromFile('D:\Delphi\De2\Formular2.11\ Login.txt'); for j := 0 to TStringList.Count - 1 do begin if form1.Edit2.Text = FileList[j] then begin if form1.Edit1.Text = FileList[i] then ShowMessage('Erfolgreich eingelogt'); end else ShowMessage('Leider falsch. Versuch es bitte nochmal.'); zaehler:= zaehler + 1; if zaehler >= 3 then begin Form1.Close; end; end; FileList.Free; |
Re: vergleich mit einer txt datei
Zitat:
Delphi-Quellcode:
Warum jetzt auf einmal Filelist???
for j := 0 to TStringList.Count - 1
>>>>> for j := 0 to Filelist.Count - 1 Gruß K-H |
Re: vergleich mit einer txt datei
Zitat:
Wenn du nur das machen würdest:
Delphi-Quellcode:
dann wüsste Delphi ja nicht auf welche Stringlist du zugreifen willst. Du musst die Stringlist schon mit Namen ansprechen also
for j := 0 to TStringList.Count - 1
Delphi-Quellcode:
bzw.
for j := 0 to UsernameList.Count - 1
Delphi-Quellcode:
for j := 0 to PasswortList.Count - 1
[Edit] Ups, der Post oben drüber ist ja gar nicht von Nero.... Aber kann ja nicht schaden, was ich geschrieben habe |
Re: vergleich mit einer txt datei
Und wieso wird da einmal auf j und einmal auf i zugegriffen? Vielleicht zeigst Du uns mal eine Beispielzeile aus der Datei, dann können wir evtl. besser helfen.
|
Re: vergleich mit einer txt datei
*!!*
j steht für die Passworte und i für die Benutzernamen und Nero hat da irgendwelche Bezüge durcheinander geworfen. D müssen wohl mal Grundlagen her. Gruß K-H |
Re: vergleich mit einer txt datei
:shock:
|
Re: vergleich mit einer txt datei
hab alles hingekriegt.
danke für die hilfe, so schaut der quelltext jetzt aus: interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm4 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Label1: TLabel; Edit10: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form4: TForm4; zeilenzaehler, i, j: integer; FileList: TStringList; implementation uses Unit1, Unit2; {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); begin if Edit10.Text = 'Admin' then begin StringGrid1.Cells[0, zeilenzaehler]:= Form1.Edit1.Text; StringGrid1.Cells[1, zeilenzaehler]:= DateToStr(now); StringGrid1.Cells[2, zeilenzaehler]:= loginzeit; StringGrid1.Cells[3, zeilenzaehler]:= logoutzeit; end else ShowMessage('Tut mir Leid, Zugang verweigert.'); FileList.Free; end; procedure TForm4.Button2Click(Sender: TObject); begin ShowMessage('Erfolgreich ausgelogt'); Form1.Show; Form4.Visible:= False; end; procedure TForm4.FormCreate(Sender: TObject); begin zeilenzaehler:= 1; StringGrid1.Cells[0,0] := 'UserName'; StringGrid1.Cells[1,0] := ('Datum'); StringGrid1.Cells[2,0] := ('Login Zeit'); StringGrid1.Cells[3,0] := ('Logout Zeit'); Edit10.Text:= ''; end; end. |
Re: vergleich mit einer txt datei
sorry war der falsche. hier ist der richtige
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; zaehler: integer; loginzeit, logoutzeit: string; fenster: boolean; f: TextFile; implementation uses Unit2, Unit4; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FileList: TStringList; i, j: integer; begin fenster:= false; if fenster = false then begin FileList:= TStringList.Create; FileList.LoadFromFile('D:\Delphi\De2\Formular2.11\ Login.txt'); for j := 0 to FileList.Count - 1 do begin if form1.Edit2.Text = FileList[j] then begin for I := 0 to FileList.Count - 1 do begin if form1.Edit1.Text = FileList[i] then ShowMessage('Erfolgreich eingelogt'); end; end; end; end else if fenster = True then begin ShowMessage('Leider falsch. Versuch es bitte nochmal.'); zaehler:= zaehler + 1; if zaehler >= 3 then begin Form1.Close; end; end; FileList.Free; loginzeit:= TimeToStr(now); end; procedure TForm1.Button2Click(Sender: TObject); begin Form2.Show; Form1.Visible:= False; end; procedure TForm1.Button3Click(Sender: TObject); begin Form4.Visible:= True; Form1.Visible:= False; end; procedure TForm1.Button4Click(Sender: TObject); begin ShowMessage('Erfolgreich ausgelogt'); logoutzeit:= TimeToStr(now); end; procedure TForm1.FormShow(Sender: TObject); begin zaehler:= 0; Edit1.Text:= ''; Edit2.Text:= ''; end; end. |
Re: vergleich mit einer txt datei
Zitat:
Delphi-Quellcode:
diskutiert worden.
if boolvar=true then
Bitte nutze immer
Delphi-Quellcode:
Das gleiche gilt entsprechend für false also
if boolvar then
Delphi-Quellcode:
Für eine Fingerübung mag es ausreichend sein, aber wenn Du ernsthaft Passwörter in Dateien ablegen willst, solltest Du über Hashwerte und oder Verschlüsselung intensiv nachdenken.
if not(boolvar) then
Gruß K-H |
Re: vergleich mit einer txt datei
Mir erscheint die ganze Logik etwas seltsam: wenn die Inhalte der Edits jeweils in einer Zeile der Datei enthalten sind, gilt der Login als erfolgreich :gruebel: (da schreib ich doch gleich in beide Edits dasselbe, dann muss ich nur einmal raten).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz