Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwortabfrage (https://www.delphipraxis.net/110532-passwortabfrage.html)

Sylux 19. Mär 2008 15:03


Passwortabfrage
 
Hallo,
ich bin noch ein Delphifrischling^^ und
ich will ein Programm schreiben bei dem man einen Namen eingeben muss und dann das richtige Passwort dafür.

Code:
unit Keygen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
     serie: integer;
     name:string;
begin
     if Edit1.Text = '' then
       Form4.Showmodal
else
     name:= Edit1.text;
     serie:= ord(name[1]);

if
   edit2.text=edit1.text then

   Form5.Showmodal

   else
   Form4.Showmodal









end;

end.
Also der 1. Buchstabe von "name" soll in den ASCII Wert umgewandelt werden und dieser Wert soll dann die "serie" sein.
Aber irgendwie klappt das nicht. Es wird fehlerfrei "compiliert".
Aber wenn ich z.B. A als "name" eingebe und "65" als Serie dann kommt auch immer das Fenster mit der Fehlermeldung: falsch.

Woran liegt das?
Wo liegt der Hund begraben.

Danke schonmal

DeddyH 19. Mär 2008 15:07

Re: Passwortabfrage
 
Gibst Du evtl. ein kleines a ein? Das hat nicht den ASCII-Wert 65, sondern 97.

P.S.: Willkommen in der DP :dp:

Jelly 19. Mär 2008 15:10

Re: Passwortabfrage
 
Herzlich willkommen hier bei uns in der Delphi-Praxis,

Du solltest an deinem Code mal ein paar grundlegende Anpassungen machen, wie ich meine:
  • Gib deinen Forms und Units aussagekräftige Namen. Unit1, Unit2, Unit3, Form1, Form2 usw. verwirrt und du weisst bald selbst nicht mehr, was wofür steht.
  • Überprüfe mal dein if-then Bedingungen. Ich denke, so, wie du sie da schreibst, sind sie nicht gemeint
  • Formtiere deinen Code so, dass man erkennt, was wann passiert. Code sollte immer schön eingerückt werden.
So, und nun zu deiner Frage...
Zitat:

Zitat von Sylux
Aber wenn ich z.B. A als "name" eingebe und "65" als Serie dann kommt auch immer das Fenster mit der Fehlermeldung: falsch.

Welches Fenster zeigt wann "falsch" an. Davon ist in deinem Code nichts zu erkennen.

Der.Kaktus 19. Mär 2008 15:11

Re: Passwortabfrage
 
Hallo,

kann es sein , dass Du vor
Delphi-Quellcode:
serie:= ord(name[1]);
ein
Delphi-Quellcode:
begin
und danach ein
Delphi-Quellcode:
end;
vergessen hast?

Sylux 19. Mär 2008 15:16

Re: Passwortabfrage
 
Danke für die vielen Antworten :)
Ok ich werde den Code nächstes mal besser formatieren.

ich habe ein Fenster gemacht dort drin steht "Falsch".
Das kommt entweder wenn man Bei dem Namen 0 Zeichen eingibt:

Code:
begin
     if Edit1.Text = '' then
       Form4.Showmodal

Die "Form4" ist eben das Fenster das einem Mitteilt es ist Falsch.

Oder es kommt wenn:
Code:
if
   edit2.text=edit1.text then

   Form5.Showmodal

   else
   Form4.Showmodal
eben Edit2 und Edit1 nicht gleich sind.

@Der.Kaktus

Hilft leider nicht.

@Jelly

Ich kann leider keinen Fehler in der if-then Bedingung erkennen.
Könntest du mir da mal helfen:) Ich kenn mich da auch noch nicht so aus.

angos 19. Mär 2008 15:20

Re: Passwortabfrage
 
Hiho,

und, sind edit1.text und edit2.text gleich? :)

Ich glaub genau da liegt nämlich der Fehler...

[EDIT Ich verstehe noch gar nicht genau, was letztendlich die Lösung sein soll :gruebel:

1.) Du möchtest einen Namen (Edit1) und ein Passwort (Edit2) eingeben.
2.) Nun soll überprüft werden, ob "der Ascii des ersten zeichens von edit1.text " dem Wert aus "Edit2,text" entspricht?!

dann sollte das ganze so aussehen:

Delphi-Quellcode:
procedure TForm1.btnClick(Sender: TObject);
var
  serie, iPW: integer;
  name: string;
begin
  if Edit1.Text = '' then
    showmessage('NEIN')
  else
    name := Edit1.text;

  serie := ord(name[1]);

  if TryStrToInt(Edit2.Text, iPW) then
  begin
    if iPW = Serie then
      showmessage('JA')
    else
      showmessage('NEIN')
  end
  else
    showmessage('NEIN');
end;

Sylux 19. Mär 2008 15:29

Re: Passwortabfrage
 
omg

Warum kommt man da nicht selbst drauf Oo

Wenn ich in die 2 Editfelder das selbe eingebe kommt die Meldung das es "Richtig" sei.
Dann muss der Fehler wohl an der "ord" Funktion liegen?
Die sollte ja den ASCII Wert von dem 1. Buchstaben der VAribale "name" berechnen.

angos 19. Mär 2008 15:30

Re: Passwortabfrage
 
schau dir nochmal meinen Beitrag an, habe was editiert. Ansonsten beschreibe bitte einfach nochmal (ohne sourcecode) genau das was eigentlich gemacht werden soll

ORD arbeitet korrekt, du machst damit aber nichts ;)

Sylux 19. Mär 2008 15:40

Re: Passwortabfrage
 
Stimmt.
Deins Funktioniert super!

Also es soll passieren:

Ich will ein Art Loginfeld haben:

Name, Passwort

Wenn man nun bei Name: "Tobias" eingibt dann soll der 1. Buchstabe des Namens in den ASCII Wert umgewandelt werden soll. Also "T" und dieser ASCII Wert davon soll das Passwort sein.

Und wenn es übereinstimmt also das Passwort und der vom Programm errechneten ASCII Wert soll eine Nachricht: JA kommen.

Wenn nicht halt: Nein.

Könntest du mir deinen Code nochmal kommentieren?
Was bewirkt z.B. TryStrToInt(Edit2.Text, iPW)

PS:

Entschuligt den Crossoverpost.
http://forum.delphi-treff.de/showthr...861#post166861

Jelly 19. Mär 2008 15:56

Re: Passwortabfrage
 
Zitat:

Zitat von Sylux
Was bewirkt z.B. TryStrToInt(Edit2.Text, iPW)

Dafür gibts die Hilfestellung von Delphi selbst. Die solltest du als allererstes konsultieren, bevor du die Frage hier stellst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.
Seite 1 von 2  1 2      

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