Wieso schreibst Du nicht einfach eine Funktion, die aussagt, was Du willst? Dann hast Du beide Probleme ein für alle mal gelöst:
Delphi-Quellcode:
Function CanAccessAdapter (col : TColInfo) : Boolean;
// Ja ja geht auch anders/einfacher aber egal, die Funktion ist zweitrangig
Begin
if Not Assigned (ci) Then return false;
return := Assigned(ci.CompToCellProc);
End;
...
// wichtiger ist, das der eigentliche Code nun viel lesbarer ist
If CanAccessAdapter (ColInfo[i]) Then begin
...
Sieht doch noch besser aus, oder?
Ich persönlich finde, das Compilerschalter keine Änderung der Funktionalität herbeiführen sollen.
Heute machst Du das so harmlos (knallt/knallt nicht), aber was ist, wenn Du mal soetwas machst?
Delphi-Quellcode:
function SomeFunc (p : TSomething) : Boolean;
Begin
if p=Nil then inc(SomeCounter);
return false
End;
...1
if (ci<>Nil) and SomeFunc(ci) then
Ok, das ist auch kein sonderlich guter Stil (Seiteneffekte in Funktionen), aber trotzdem ein Beispiel, wie ein Programm je nach Compilerschalter unterschiedlich funktioniert. Und DAS wäre fatal, weil Du es nicht einmal sofort merkst