Here's another suggestion if using string is a must:
- First test if 1 of the 8 byte numbers in v block contains 0. This is easy when converting
array[0..1] of longword -> array[0..7] of byte
For example: b8:=TBlock8(v);

- Then split 8 characters in 4 character parts and add another 4 characters after/before both 2 parts that are easy to detect and delete when decrypting.

- A bit trickier here makes the selection of added characters. Obsiously that 4 char sequence could not then be allowed to exist in plain text, so use characters that are not used when writing text.

-Also it now requires that both blocks are tested for #0 again. Change the 4 before/after characters until there is no #0 in outcome :roll:
Example: default 4 chars + #1#1#1#1
if #0 found in any of 8 outcome, then #1#1#1#2 has high propability of not contain one. this #1#1#1 will still be detectable no matter how large you grow the latter char.

Too worky?