A primera vista aquí hay un error:
Código Delphi
[-]
while i<=( (ancho*3)-1) do
Cuando debería de ser:
Código Delphi
[-]
while i<=( (ancho-1)*3) do
Luego me parece que esta comparación siempre es verdadera, al tratarse siempre de números positivos:
Vete corrigiendo eso, y luego ya veremos
