Varias observaciones...
1) seria prudente encerrar cada condicion compuesta de los if en paréntesis...
Código Delphi
[-] if (vActChar in vLetras_Up_Set) and not vLetraMayuscContada then
Código Delphi
[-] if (vActChar in vLetras_Up_Set) and (not vLetraMayuscContada) then
Solo un capricho, pero la experiencia despues te dirá por que...
2) tienes un problema de logica con los if.. else if...
por ejemplo, si tienes un password como: "hola"
entonces... la primera vez evalua y encuentra una minuscula..
la segunda vez que pasa por el for, no entra a la minuscula, sino que va derecho al caracter... y en adelante no cuenta nada... total: una minuscula y un caracter para la palabra "hola".
dices que no llega a evaluar carcateres?? es poco probable, pues casi todo va a parar alla... hiciste un seguimiento paso a paso?? has revisado lo que almacenan los conjuntos... es decir, no es lo mismo si trabajas con delphi 7 a delphi 2010, pues en este útlimo hay cambios de char a ansichar... revisa este tema
3) Veo que si el password es menor de 8 caracteres automaticamente reseteas la coplejidad a uno... yo preferiria dar pesos a cada condicion, es decir:
1) que tenga mas de 8 caracteres: 30 puntos
2) que tenga una minuscula: 5 puntos
3) que tenga una mayuscula: 20 puntos
4) que tenga un carcater: 30 puntos.
5) que tenga un numero: 15 puntos
total 100 puntos... y evaluas la complejidad segun la puntuación... es casi lo mismo... pero...