Zitat von
Jasocul:
Klärt mich auf. Wo ist der Fehler?
Delphi-Quellcode:
fehler:='';
if Belegnummer <> 0 then
if Belegdatum = 0 then
fehler:='Fehler: Belegdatum'
else
if x = 0 then
fehler:='Fehler: x'
else
if y = 0 then
fehler:='Fehler: y'
else
fehler:='Fehler: Belegnummer';
if fehler = '' then
// mache was, es ist alles ok
Result:=fehler;
Der Fehler liegt im letzten else. Gebe mal für alle Variablen den Wert <> 0, dann kommt der Fehler "Belegnummer". Wenn die Belegnummer aber null ist, wird sofort aus dem Vergleich herausgesprungen, d. h. zum "Fehler:Belegnummer" kommt er nicht. Wenn Du das aber haben willst, musst Du um die erste Bedingung begin und end setzen.
Delphi-Quellcode:
fehler:='';
if Belegnummer <> 0 then
begin
if Belegdatum = 0 then
fehler:='Fehler: Belegdatum'
else
if x = 0 then
fehler:='Fehler: x'
else
if y = 0 then
fehler:='Fehler: y'
end
else
fehler:='Fehler: Belegnummer';
if fehler = '' then
// mache was, es ist alles ok
Result:=fehler;
Deshalb habe ich das geändert, allerdings muss in meinem Beispiel das "<>" geändert in "=" werden, das hatte ich übersehen.
Zitat von
Michael Habbe:
Delphi-Quellcode:
fehler:='';
if Belegnummer = 0 then // hier hatte ich den Fehler "<>"
fehler:='Fehler: Belegnummer'
else
if Belegdatum = 0 then
fehler:='Fehler: Belegdatum'
else
if x = 0 then
fehler:='Fehler: x'
else
if y = 0 then
fehler:='Fehler: y'
else
; // mache was, es ist alles ok, kein Fehler aufgetreten
result := fehler;
Zitat von
Luckie:
Und warum hatte er da einen Fehler drinne? Weil es einfach unübersichtlich ist. Jetzt stell dir den Code mal noch mit 10 bis 15 Zeilen Code zwischen den ifs vor.
Also unübersichtlich kann ich diese paar Zeilen nicht nennen.
Ich habe in meinen Projekten diese Verschachtelungen mit viel Code zwischen den begins und ends. Diese erstrecken sich teilweise über mehrere Seiten. Die Voraussetzung für die Übersichtlichkeit ist natürlich, dass man alles brav ordentlich einrückt. Dann muss man nur mit dem Cursor nach oben fahren, um z.B. zum end das begin zu finden.