Entwickler-Ecke

Sonstiges (Delphi) - Direkt Wert berechnen


Delete - Do 14.10.04 18:56
Titel: Direkt Wert berechnen
Hallo,

kann mir bitte jemand sagen, wie ich meinem Proggie mitteile,
dass es Werte in 'Echtzeit' berechnet, also ohne, dass ich
auf einen 'tuirgendwas' button klicken mus...?

Zum Beispiel das Addieren zweier Terme.

Gruss,

neo


Delete - Do 14.10.04 19:13

Programme der neueren Genration sind generell ereignisgesteuert, sprich es wird nur dann Code ausgeführt, wenn ein Ereignis passiert. DIese können alledings beleiber Natur sein. So könnte dein Berechnungsvorgang im FormCreate Ereignis beginnen und den gesamten Programmablauf bearbeitet werden. QBasic-Manier gibt es aber nicht mehr.


tommie-lie - Do 14.10.04 19:47

Elite hat folgendes geschrieben:
QBasic-Manier gibt es aber nicht mehr.
Hast du dir schonmal die DPR-Datei angeschaut? ;-)


sourcehunter - Do 14.10.04 19:48

Es gibt die Möglichkeit ein OnIdle-Ereignis zu definieren. Das wird immer erzeugt, wenn gerade "nichts" gemacht wird, also kein anderes Ereignis bearbeitet wird. Funktioniert wie ein OnClick-Ereignis und gehört zu Application(globale Variable).


Delete - Do 14.10.04 20:23

Also in meinem Programm soll eine Passwortabfrage stattfinden:

Erst wird mit einem Buttonklick ein Editfenster geöffnet,
in dem das PW eingegeben werden soll.
Ist das Passwort falsch, kommt eine Meldung.
Ist es richtig erscheint eine TMemo.

Also ich möchte, dass das Memo Feld erscheint,
sobald das richtige PW eingegeben wird.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.visible:=true;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin

val(edit1.text,passwort,code);
if edit1.text=' geheimes passwort =) ' then  memo1.visible:=true
else showmessage('falsches passwort');


In der delphi hilfe habe ich folgendes gefunden:


Delphi-Quelltext
1:
type TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;                    



Kann mir bitte jemand sagen, wie ich das verbinden kann?

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.


tommie-lie - Do 14.10.04 20:31

NeoAngel hat folgendes geschrieben:
Erst wird mit einem Buttonklick ein Editfenster geöffnet,
in dem das PW eingegeben werden soll.
Ist das Passwort falsch, kommt eine Meldung.
Ist es richtig erscheint eine TMemo.
Editfenster? :gruebel:
Wenn man nach der Eingabe des Passwortes dieses auch noch bestätigen soll, hast du damit dein Event -> Klick-Event des passenden OK-Buttons.
Willst du einfach nur ein Editfeld haben, daß beim richtigen Inhalt ein Memo anzeigt, ohne daß man vorher noch Enter oder dergleichen Drücken muss, wäre OnChange vom Edit vielleicht eine Überlegung wert: Bei jedem Tastendruck überprüfst du, ob der Inhalt des Edits richtig ist, wenn ja, zeigst du das Memo an, wenn nicht, dann eben nicht.


Delete - Do 14.10.04 20:59

cool, danke.

jetzt hab ich aber folgendes prob lol:
es wird nach jeder tasteneingabe eine tolle falsch meldung angezeigt.

wie kann ich dies unterbinden?


tommie-lie - Do 14.10.04 21:09

NeoAngel hat folgendes geschrieben:
es wird nach jeder tasteneingabe eine tolle falsch meldung angezeigt.
Hmm, daran hatte ich nicht gedacht. Du könntest vor dem Prüfen die Länge abfragen und nur dann schauen, ob auch der String richtig ist, wenn die Länge stimmt. Ansonsten ist es eigentlich üblich, nach der Passworteingabe irgendeine Bestätigungsaktion durchzuführen.


Anfänger - Do 14.10.04 21:10

Du musst überlegen, wann dein Programm reagieren soll.
in diesem Fall würde ich auch OnChanche verwenden, aber zusätzlich noch eine If-Anweisung verwenden, die prüft, ob die Anzahl der Zeichen stimmen, und erst dann die richtige Abfrage macht.

Anzahl der Zeichen: Length(Passwort);


Delete - Do 14.10.04 21:13

NeoAngel hat folgendes geschrieben:

es wird nach jeder tasteneingabe eine tolle falsch meldung angezeigt.

Das ist jetzt einfach ne Überlegungssache. Beim OnChange Ereignis ist es wohl kaum sinnvoll, Fehlermeldungen auszugeben, wenn das falsche PW eingeben wurde. Vielmehr sollte eine Bestätigung kommen, wenn es das richtige ist.
Wenn der User nach Eingabe noch Enter drücken soll, ist es hingegen der richtige Weg so wie du es gemacht hast.
Oder hab ich dich falsch verstanden?


Anfänger - Do 14.10.04 21:23

Sorry, da hab ich gar nicht dran gedacht.

Vergiss, meinen Einwand und benutze einfach statt OnChange OnKeyUp.