Autor Beitrag
bvl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mo 21.03.05 16:14 
Hallo,
ich habe eine Unit gemacht, die eine Klasse enthält, welche die Daten beinhaltet.
In einer anderen Unit habe ich ein Formular gestaltet, welches die Daten einzugeben, verändern und anzuzeigen erlaubt.

Die Klasse, in der die Daten nachher drin sind, hat für jede Property ein Feld, welches mit einer eigenen Methode beschrieben wird. Diese Zugriffsmethoden möchte ich zur Validierung der Eingaben verwenden. Es soll aber eine Information an das Formular zurückgegeben werden, wenn was faul ist an der Eingabe (d.h. das entsprechende Eingabefeld im Formular soll rot eingefärbt werden, zudem soll ein Tooltip evtl. eine Erklärung des Fehler geben.

Große Frage ist nun: Wie macht man das? Über Execptions? Oder macht man aus den Zugriffsmethoden functions? Oder wie oder was? Ich habe keine Ahnung was da die günstigste Lösung ist... ich hoffe ihr könnt mir weiterhelfen...
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 21.03.05 16:25 
user profile iconbvl hat folgendes geschrieben:
Es soll aber eine Information an das Formular zurückgegeben werden, wenn was faul ist an der Eingabe [...] Wie macht man das? [...] Oder macht man aus den Zugriffsmethoden functions?
Ja, zum Beispiel.
Dann kannst du flexibel einen von vielen möglichen verschiedenen Zuständen/Fehlercodes/Glückwunschtelegrammen zurückgeben. :wink:
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 22.03.05 12:39 
Oder du erstellst in Deiner Daten-Klasse ein OnError - Event. Entweder für jedes Feld ein eigenes Event oder ein Event für alle Felder in dem dann über Parameter das falsche Feld und der Fehlertext übergeben wird.
bvl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mi 23.03.05 12:08 
Das mit den Funktions gefällt mir an und für sich ganz gut,
funktioniert aber nicht.

So sieht es jetzt bei mir aus:

Deklarationen:
ausblenden Delphi-Quelltext
1:
2:
3:
FEmailAdress : string;
function SetEmailAdress (NewEmailAdress : string) : boolean;
property EmailAdress : string read FEmailAdress write SetEmailAdress : boolean;

und die eigentlich Funktion:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function TPerson.SetEmailAdress (NewEmailAdress : string) : boolean;
begin
  if IsValidEmailAdress(FEmailAdress) then begin
    FEmailAdress := lowercase(NewEmailAdress);
    SetEmailAdress := true;
  end else begin
    FEmailAdress := '';
    SetEmailAdress := false;
  end;
end;

Bei der Deklaration property EmailAdress bringt er aber einen Fehler vor dem Boolean, er würde ein ; und kein : erwarten. Gehts doch nicht mit den Funktionen?

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.03.05 12:13 
Für "Property-Setz-Routinen" Setxxx MUSS immer eine Procedure verwendet werden, keine Function!
bvl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mi 23.03.05 12:18 
Also bleibt mir nur noch der Weg über die Exceptions?
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.03.05 12:24 
Wenn du dich von den properties lösen und Eigenschaften einfach direkt (wie in Java) über set-functions setzen und mit get-functions lesen würdest, könntest du direkt einen Fehlercode zurückbekommen.
Ansonsten würde ich dir das OnError-Ereignis empfehlen.
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mi 23.03.05 13:34 
user profile iconbvl hat folgendes geschrieben:
Also bleibt mir nur noch der Weg über die Exceptions?

Sorry, ich war es wohl, dessen vorherige Antwort dich ins Bockshorn gejagt hat. :oops:
Ich habe normale Methoden der Klasse im Hinterkopf gehabt (was auch Elite jetzt angeregt hat) als ich meinte, Funktionen wären hier ganz nützlich. Geschrieben hattest du aber eindeutig von den "Property-Zugriff-Methoden". Ich hatte also nicht richtig aufgepasst. :(
bvl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Mi 23.03.05 15:39 
Super Ingo :D

Kein Problem, und danke trotzdem! Ich gehe jetzt in der Tat auf Functions über...