Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit ReadString, Immer Def (https://www.delphipraxis.net/152292-problem-mit-readstring-immer-def.html)

Fussel9 17. Jun 2010 16:42

Delphi-Version: 2006

Problem mit ReadString, Immer Def
 
Hi, aus ihrgendeinem Grund greift immer der else Handler

Delphi-Quellcode:
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;
Ist da ein fehler im Quelltext...?

DeddyH 17. Jun 2010 16:51

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?

Fussel9 17. Jun 2010 16:56

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

DeddyH 17. Jun 2010 16:58

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.

himitsu 17. Jun 2010 17:02

AW: Problem mit ReadString, Immer Def
 
Zitat:

Delphi-Quellcode:
Load.ReadString('MPW','PW',

(Sektion, Value) und nicht andersrum/falschrum :zwinker:
Delphi-Quellcode:
Load.ReadString('PW','MPW',

PS: Das Passwort im Klartext in einer Textdatei?

Fussel9 17. Jun 2010 17:02

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...:?:?:

Fussel9 17. Jun 2010 17:04

AW: Problem mit ReadString, Immer Def
 
Zitat:

Zitat von himitsu (Beitrag 1029679)
Zitat:

Delphi-Quellcode:
Load.ReadString('MPW','PW',

(Sektion, Value) und nicht andersrum/falschrum :zwinker:
Delphi-Quellcode:
Load.ReadString('PW','MPW',

xD OMG und ich such das schon seit gestern :lol:

THX:thumb:

Aphton 17. Jun 2010 17:46

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

xZise 17. Jun 2010 17:56

AW: Problem mit ReadString, Immer Def
 
Zitat:

Zitat von Fussel9 (Beitrag 1029680)
Wieso denn das? Der Defaultwert ist so lang da es etwas sein soll das nie jemand als passwort nehmen wird...[...]

Sag niemals nie!

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

DeddyH 17. Jun 2010 18:06

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.

Fussel9 17. Jun 2010 18:26

AW: Problem mit ReadString, Immer Def
 
Wie schon gefragt:

Wozu Konstanten?








PS: Es funktioniert alles, also bis jetz habe ich keine Probleme....^^

DeddyH 17. Jun 2010 18:34

AW: Problem mit ReadString, Immer Def
 
Ganz einfach:
Delphi-Quellcode:
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;
Hier ist 3 mal derselbe String gemeint. Will man den mal ändern, muss man das an allen 3 Stellen tun.

Dazu im Vergleich:
Delphi-Quellcode:
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;
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.

Fussel9 17. Jun 2010 18:44

AW: Problem mit ReadString, Immer Def
 
ok, aber da ich es nur an zweistellen benutze kann ich STRG+C und STRG+V benutzen ;)

DeddyH 17. Jun 2010 18:45

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