when you think about it, in order to access data written, say 10 seconds ago, then you need to have written that data in the first place.  so, for variable delaytimes, you have to choose the longest delay you will need, and set your delaywrite to that length.
 
if you don't need realtime behaviour, and need to conserve cpu, then a workaround would be to have delwrite/read pairs of increasing lengths in subpatches, with [switch~] objects turning off all the subptaches except the one in current use. 
 
if you do that, and switch between delays in realtime, you're going to get all sorts of time-scrambled junk while the buffers fill up.