Dass man sowas wie
if TheBoolean {Variable/Funktion} = True {Konstante}
niemals machen sollte, sollte langsam mal jeder wissen.
Es wird ja oft genug drauf rumgehackt und der Grund genannt. (siehe tausende Threads hier)
Delphi-Quellcode:
{FAIL}
//if (FieldByName('archiv').AsString <> '') or (FieldByName('archiv').IsNull = False) then
if (FieldByName('archiv').AsString <> '') or not FieldByName('archiv').IsNull then
if (FieldByName('archiv').AsString <> '') or not (FieldByName('archiv').AsString = '') then // für den Fall NULL das IsNull gegen AsString ersetzt ('' wird durch das erste AsString behandelt)
if (FieldByName('archiv').AsString <> '') or (FieldByName('archiv').AsString <> '') then // ein bissl boolesche Mathematik
if FieldByName('archiv').AsString <> '' then // Gleiches gekürzt
Feld_leer := False;
{FUNZT}
if (FieldByName('archiv').AsString = '') or FieldByName('archiv').IsNull then
if FieldByName('archiv').AsString = '' then // IsNull entfernt, weil im AsString enthalten
Feld_leer := True;
{KURZ}
Feld_leer := FieldByName('archiv').AsString = '';
Grund:
https://www.delphipraxis.net/205186-...ml#post1471558 -> #3 und #4
AsString gibt bei NULL ein '' aus
AsInteger bei NULL ein 0
Was genau ist leer für dich?
Bzw. was erwartest du wann? (NULL, '' oder 'abc')
Ich seh keinen
FAIL Fehler, aber kann es zufällig sein, dass dein Compiler irgendwas von nicht-initialisierten Variablen schwafelt und niemand drauf hört?