Muy bonito programa, yo solo le agregaria esta parte a una de las funciones para que no de error de division por cero y pueda ser ejecutado desde delphi nomas
Código Delphi
[-]
function V(x,y : integer; q : Carga) : double; overload;
const
K : double = $0500;
var
asa: double;
begin
try
asa:=R(q.x,q.y,x,y);
if asa=0 then begin
result:=0;
asa:=1;
exit;
end;
result := q.q*K / R(q.x,q.y,x,y) ;
except
result := 0;
end;
end;