Gracias Ganduke, ahora ya lo veo.
Declarar pvp2 como Double no está mal, pero puedes declararlo simplemente como Float.
El problema te lo está dando ahora porque la cadena contiene un '.' y no puede convertirlo para que sea un número. Es decir necesita que el string no contenga un punto, sino una coma.
Lo que puedes hacer es usar cualquiera de las funciones que tiene Delphi para substituir carácteres en una cadena. Yo a bote pronto he probado la funcion AnsiReplaceStr que está en la unit StrUtils
Y al final tu código quedaria de la siguiente manera:
Código Delphi
[-] pvp2:=StrToFloat(AnsiReplaceStr(listbox3.Items[n], '.', ','));
Espero que así ya te sirva.
Saludos