![]() |
Delphi-Version: 2006
Problem mit ReadString, Immer Def
Hi, aus ihrgendeinem Grund greift immer der else Handler
Delphi-Quellcode:
Ist da ein fehler im Quelltext...?
procedure TFEnterPW.CheckPasswort;
var Load: TInifile; passwort:String; begin Load:=TInifile.Create(ExtractFilePath(ParamStr(0))+'settings.lem'); ShowMessage(ExtractFilePath(ParamStr(0))+'settings.lem'); passwort:=Load.ReadString('MPW','PW','AGAbugudalo91634187621986201245237156'); if not (passwort='AGAbugudalo91634187621986201245237156') then begin if not (passwort=EPasswort.Text) then begin MessageDLG('Falsches Passwort!',mtWarning,[mbCancel],0); self.Close; end else begin MessageDLG('Passwort stimmt mit dem Masterpasswort überein.',mtInformation,[mbOK],0); Application.ShowMainForm:=True; end; end else begin MessageDLG('Ladefehler!',mtError,[mbOK],0); end; Load.Free; end; |
AW: Problem mit ReadString, Immer Def
Welcher else-Handler? Ich seh da 2. Bist Du einmal mit F8 durchgesteppt und hast Dir den Inhalt der Variablen angeschaut?
|
AW: Problem mit ReadString, Immer Def
Dieser Else-Handler:
else begin MessageDLG('Ladefehler!',mtError,[mbOK],0); und es handelt sich demnach um den Def Wert. Es wird also jedes mal die Fehlermeldung: Ladefehler! ausgelöst.... // Die Ini-Datei existiert und der Eintrag darin ist auch vorhanden... hier mal was in der ini steht: [Settings] Autoload=1 Path=23_0_0.lem Invisible=1 [PW] MPW=Test die datei settings.lem liegt im selben ordner wie die .exe |
AW: Problem mit ReadString, Immer Def
Dann debugge das Ganze doch einmal. Übrigens, wieso nimmst Du so einen langen Defaultwert und benutzt dann keine Konstanten? Da sind Fehler doch bereits vorprogrammiert.
|
AW: Problem mit ReadString, Immer Def
Zitat:
Delphi-Quellcode:
Load.ReadString('PW','MPW',
PS: Das Passwort im Klartext in einer Textdatei? |
AW: Problem mit ReadString, Immer Def
Wieso denn das? Der Defaultwert ist so lang da es etwas sein soll das nie jemand als passwort nehmen wird...
Und wo soll ich denn hier Konstanten benutzen? Ps: Was soll ich den beim Debuggen finden? Ich sehe das er in den elehandler spring und der Wert der Def Wert ist...:?:?: |
AW: Problem mit ReadString, Immer Def
Zitat:
THX:thumb: |
AW: Problem mit ReadString, Immer Def
du wirst trotzdem in den Else-Bereich deiner Abfrage landen, denn
MPW=Test und die Abfrage lautet: - wenn Passwort, das aus der Ini-Datei gelesen wird, <> 'AGAbuguda...' dann mache jenes - ansonsten (ELSE BEREICH) gebe nachricht aus: Ladefehler |
AW: Problem mit ReadString, Immer Def
Zitat:
Stattdessen hätte ich das irgendwie anders gemacht. Keine Ahnung ob man fragen kann, ob der Wert existiert. Aber das wäre dann wesentlich besser und sicherer. MfG Fabian |
AW: Problem mit ReadString, Immer Def
Und meine Frage, wieso hier keine Konstanten verwendet werden, ist auch noch nicht beantwortet. Nach dem DRY-Prinzip ist das zwingend erforderlich IMHO.
|
AW: Problem mit ReadString, Immer Def
Wie schon gefragt:
Wozu Konstanten? PS: Es funktioniert alles, also bis jetz habe ich keine Probleme....^^ |
AW: Problem mit ReadString, Immer Def
Ganz einfach:
Delphi-Quellcode:
Hier ist 3 mal derselbe String gemeint. Will man den mal ändern, muss man das an allen 3 Stellen tun.
procedure TForm1.Blubb;
begin Machwas('Ich bin ein ganz langer String'); end; procedure TForm1.Bla; begin Machwasanderes('Ich bin ein ganz langer String'); end; procedure TForm1.Wuppdi; begin Machnochwasanderes('Ich bin ein ganz langer String'); end; Dazu im Vergleich:
Delphi-Quellcode:
Wie oft muss man hier ändern? Kann man sich vertippen, ohne dass der Compiler meckert? Wird der Quelltext kürzer und übersichtlicher? Diese Fragen kannst Du Dir selbst beantworten.
const LangerString = 'Ich bin ein ganz langer String';
procedure TForm1.Blubb; begin Machwas(LangerString); end; procedure TForm1.Bla; begin Machwasanderes(LangerString); end; procedure TForm1.Wuppdi; begin Machnochwasanderes(LangerString); end; |
AW: Problem mit ReadString, Immer Def
ok, aber da ich es nur an zweistellen benutze kann ich STRG+C und STRG+V benutzen ;)
|
AW: Problem mit ReadString, Immer Def
Mach, was Du willst, aber komm mit hinterher nicht an, wenn etwas wegen Tippfehlern danebengeht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz