delphi - avoid complete check of an if statement -


the code sample below should evaluate string.

function evaluatestring(const s: ansistring): ansistring; var   i, l: integer; begin   l := length(s);   i:=1;   if (l > 0) , (s[i] > ' ') , (s[l] > ' ')      .....   end; 

but if l=0 (s[i] > ' ') create access violation. can avoid problem while keeping if condition?

you need either put {$b-} statement on top of code, or enable boolean short circuit evaluation in project settings.

since {$b-} default, may have turned on before, or there {$b+} directive somewhere turning off.

in short circuit evaluation mode {$b-}, delphi creates code (roughly) equivalent this:

 if (l > 0) begin     if (s[i] > ' ') begin                if (s[l] > ' ') begin                .....        end;     end;  end; 

in contrast, full boolean evaluation mode {$b+}, equivalent this:

 var a,b,c : boolean;   := (l > 0);  b := (s[i] > ' ');  // executed  c := (s[l] > ' ');  // executed   if , b , c ..... 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -