Autor |
Beitrag |
Anka
      
Beiträge: 16
|
Verfasst: Mi 22.09.10 16:32
Hallo leute,
Bin Delphi-Anfängerin und wollte mal Fragen,
1. wie ich das Edit-Feld für bestimmte Eingaben sperren kann (z.B. Buchstaben sperren)
und 2. Wie ich Fehlermeldungen erzeuge (Error-Handling), wenn z.B. nur sinnvolle Berechnungen durchgeführt werden sollen (z.B. Wurzel aus -1 sollte eine Fehlermeldung erscheinen).
Dankeschön,
Anka
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mi 22.09.10 16:58
Hi und
Für Dein erstes Problem gibt es z.B. hier und mehr Beispiele.
Für 2. wenn es keine original exeption dafür gibt(die man abfangen kann), kannst Du solche MathFunktionen z.B. in einer If Abfrage abfangen z.B.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if eingabe <0 then begin exit; end |
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 22.09.10 17:49
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Mi 22.09.10 22:33
Nebenbei bemerkt: Nein, kann man nicht immer, siehe Wikipedia
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mi 22.09.10 22:41
also soweit ich mich an die Mathematikvorlesung erinnern kann, kann man in den komplexen Zahlen uneingeschränkt rechnen. Und da ja die Wurzel einer negativen Zahl eine komplexe Zahl ergibt, warum sollte es dann da Probleme geben?
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 22.09.10 22:53
Moin und  im Forum!
Anka hat folgendes geschrieben : | Bin Delphi-Anfängerin und wollte mal Fragen, |
Bitte erstelle in Zukunft für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Danke.  Normalerweise schließen wir Threads mit mehreren Fragen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Mi 22.09.10 22:54
Dann lies den Text, den ich verlinkt habe 
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Anka 
      
Beiträge: 16
|
Verfasst: Do 23.09.10 16:43
kann ich dann einfach eingabe <0 schreiben? also versteht Delphi das Wort "eingabe" ?
|
|
Anka 
      
Beiträge: 16
|
Verfasst: Do 23.09.10 17:19
Ich nochmal
Wo im Quelltext muss ich den Code von ALF (2.Antwort in diesem Thema) eingeben?
Ich bin halt noch ganz am Anfang 
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 23.09.10 17:28
Das hängt davon ab wie Du reagieren willst...
Du kannst im OnChange des Edits prüfen, hier könntest Du eine Routine aufrufen die all Edits auf einmal prüft, alle bekommen dann auch das gleich OnChange zugewiesen.
In dieser Rountine könntest Du gültige Edits weiß färben und ungültige gelb und wenn eines ungültig ist den Button sperren......
im OnKeypress, hier könntest Du ein Zeichen welches nicht oder nicht mehr zu Text Deines Edits hinzugefügt werden soll mit Key=#0 verwerfen ....
Du könntest im OnExit eines Feldes eine Meldung anzeigen wenn Dir der Wert nicht gefällt und danach den Fokus wieder auf das Edit zurücksetzen...
Es gibt wohl noch 10 andere Möglichkeiten, Du must nur überlegen wann Du was machen möchtest und was Dir vieviel Aufwand wert ist.
Für diesen Beitrag haben gedankt: Anka
|
|
Anka 
      
Beiträge: 16
|
Verfasst: Do 23.09.10 17:46
1. Ok,danke bummi, für mich kommt das OnChange Ereigniss in Frage. Funktioniert auch alles soweit; wie kann ich daraus jetzt eine Routine machen?
2.Nochmal die Frage: Wie kann ich den "eingabe" Befehl hier in Delphi-Sprache ausdrücken?
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if eingabe <0 then begin exit; end |
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 23.09.10 18:07
kleines Beispiel im Anhang
noch ein Beispiel um Eingabemäßig Fließkommazahlen zuzulasen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in [#0..#31,'0'..'9','-',',']) or ((key='-') and (Pos('-',Tedit(sender).Text)>0)) or ((key=',') and (Pos(',',Tedit(sender).Text)>0)) then key :=#0
end; |
Einloggen, um Attachments anzusehen!
|
|
Anka 
      
Beiträge: 16
|
Verfasst: Do 23.09.10 19:01
Jetzt haben wir es gleich
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| begin mayrun := Checkbox1.Checked; if not TryStrToFloat(Edit1.Text,f1) then begin Edit1.Color := clYellow end else |
könntest du mir jetzt noch die folgenden Passagen im Code erklären:
a.)mayrun
b.)TryStrToFloat (Funktion)
c.)f1
d.)Wieso muss es noch ein 'else' geben?
Danke für die Antworten und vor allem für eure Geduld
Liebe Grüße
Anka
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 23.09.10 19:09
1  mayrun ist hier eine boolsche Variable die hier verwendet wird um Button enabled erst am Ende Setzen zu müssen.
2:)TryStrToFloat(String,DoubleVariable) gibt true zurück wenn String in ein Float gewandelt werden konnte in DoubleVariable ist dann die Zahl mit der Du weiterarbeiten kannst.
3:)f1 und fs sind die Variablen die für TryStrToFloat benötigt werden um dort die Zahlen anzulegen
4:)ohne Else beleibt Dein Edit auch bei gültiger Eingabe gelb und da hier anhand der Farben der Button freigegeben wird würde dieser niemals zu betätigen sein.
Für diesen Beitrag haben gedankt: Anka
|
|