Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Vergleich funktioniert nicht (https://www.delphipraxis.net/169367-vergleich-funktioniert-nicht.html)

programmer021 15. Jul 2012 15:25

Vergleich funktioniert nicht
 
Hallo, ich hab folgendes Problem:
Ich will ein Programm in Delphi schreiben, was ein Textfeld namens "TextInput" hat.
Und da ist ein Button namens "Check".
Wenn man den Button drückt, soll (nur als Beispiel) geprüft werden, ob da "Hallo" im Textfeld steht.
Wenn ja, soll eine Meldung mit "Dir auch" angezeigt werden.
Hier ist der Code:
Delphi-Quellcode:
procedure TMainWindow.CheckClick(Sender: TObject);
begin
    if TextInput.text = 'Hallo' then
  begin
         ShowMessage ('Dir auch!');
end;
end;
end.
Aber wenn ich kompiliere und auf den Button klicke, dann passiert nichts!!!


Kann mir jemand helfen?


Viele Grüße
programmer021

Sir Rufo 15. Jul 2012 15:29

AW: Vergleich funktioniert nicht
 
Schau mal in den OI und prüfe die OnClick Eigenschaft des Buttons, dort müsste ein Eintrag mit CheckClick stehen.

haentschman 15. Jul 2012 15:31

AW: Vergleich funktioniert nicht
 
Hallo und willkommen hier... :dp:

Wenn du einen Breakpoint in die "if" Zeile setzt hällt das Programm an ? Wie ist der Wert "Text" des Edits ?

programmer021 15. Jul 2012 16:52

AW: Vergleich funktioniert nicht
 
Hallo, erstmal danke für die Antworten!
Zu Sir Rufo: Ja, da steht CheckClick.
Zu haentschman: Wie macht man in Lazarus einen Breakpoint?

Zu Allen: Vielleicht hilft es ja, wenn ich euch den tatsächlichen Code zeige, der ist nämlich vieel kompilizierter: :roll:
Delphi-Quellcode:
procedure TMainWindow.CheckClick(Sender: TObject);
   
  begin
         if TextInput.text <> 'XYZ' then
  begin
        ShowMessage ('Invalid serial entered!!!');
        if TextInput.text = 'XYZ' then
        begin
               ShowMessage ('True serial entered!!! You are very good!!!');
              end;
        end;
 
  end;  
  end.
Es ist nämlich ein CrackMe, wo man die richtige Serial eingeben muss. (In diesem Fall XYZ)
EDIT: Beim tippen ist mir grade selber aufgefallen, woran es liegt. Wen XYZ eingegeben wird, wird ja beim
ersten if schon abgebrochen... :oops:
Aber kann mir jemand sagen, wie man das lösen kann?

Viele Grüße
programmer021

haentschman 15. Jul 2012 17:08

AW: Vergleich funktioniert nicht
 
Hallo...

Auch wenn die Logik noch falsch ist mal deinen Quelltext formatiert. Schau dir das mal an ob du den Logikfehler siehst.
Tipp: dein Programm kommt niemals zu dem Vergleich auf " = 'XYZ' " zu True
Delphi-Quellcode:
procedure TMainWindow.CheckClick(Sender: TObject);
begin
  if TextInput.text <> 'XYZ' then
  begin
    ShowMessage ('Invalid serial entered!!!');
    if TextInput.text = 'XYZ' then
    begin
      ShowMessage ('True serial entered!!! You are very good!!!');
    end;
  end;
end;




end.

Helmi 15. Jul 2012 17:11

AW: Vergleich funktioniert nicht
 
Hallo,

warum nicht so:

Delphi-Quellcode:
procedure TMainWindow.CheckClick(Sender: TObject);
begin
  if TextInput.text = 'XYZ' then
    begin
      ShowMessage ('True serial entered!!! You are very good!!!');
    end
  else
    begin
      ShowMessage ('Invalid serial entered!!!');
    end;
end;

blawen 15. Jul 2012 18:18

AW: Vergleich funktioniert nicht
 
Zitat:

Zitat von Helmi (Beitrag 1174753)
warum nicht so:

Du bist ja schon fast gemein ;-)

@programmer021:
Solche und ähnliche Logikfehler lassen sich mit einer optimaleren Formatierung des Quelltextes verhindern.
Ich empfehle Dir daher, auch dieses Thema in die Ausbildung mit einfliessen zu lassen.

Helmi 15. Jul 2012 18:22

AW: Vergleich funktioniert nicht
 
Zitat:

Zitat von blawen (Beitrag 1174755)
Zitat:

Zitat von Helmi (Beitrag 1174753)
warum nicht so:

Du bist ja schon fast gemein ;-)

Grundsätzlich unschuldig :-)

programmer021 15. Jul 2012 19:06

AW: Vergleich funktioniert nicht
 
Danke, Leute!!!!!
Mit dem Source von Helmi hat es jetzt funktioniert.
Zu haentschman: Ich habe doch eben schon gesagt, woran das Problem liegt, oder??!:?:
Wenn XYZ eingegeben wurde, dann wird doch bei der Stelle
Delphi-Quellcode:
begin
         if TextInput.text <> 'XYZ' then
  begin
schon abgebrochen, weil die Serial ja nicht ungleich XYZ ist und somit wird die Stelle
Delphi-Quellcode:
if TextInput.text = 'XYZ' then
    begin
      ShowMessage ('True serial entered!!! You are very good!!!');
    end;
niemals aufgerufen.

Und zu blawen: Auch wenn ich mir Delphi selbst beigringe und keine Ausbildung mache, werde ich in
Zukunft mehr auf sowas achten.

Viele Grüße
programmer021

haentschman 15. Jul 2012 19:49

AW: Vergleich funktioniert nicht
 
Zitat:

Zu haentschman: Ich habe doch eben schon gesagt, woran das Problem liegt, oder??!
Was das Problem ist war klar. Du solltest von selbst darauf kommen mit dem neu formatierten Quelltext. Das wäre auch nicht schwer gewesen. Selbst denken ist einfach zu unbequem... :roll: Das nächste mal schmeiße ich dir den korrekten Quelltext vor die Füße und pfeife auf die Hilfe zur Selbsthilfe. Ob du es verstehst oder nicht ist mir dann wurscht !

An die Anderen: Sorry daß mir mal die Hutschnur platzt. Ich mache mir jetzt ein Fläschchen Roten auf und beruhige mich wieder. :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz