Acces violation at addres
Publicado por CARLES (5 intervenciones) el 08/11/2009 01:54:54
Hola a todos,
soy nuevo en esto(delphi 7) , por eso ruego me disculpeis si mis preguntas no son con el máximo rigor de programación. Estoy realizando el proyecto final de carrera que consiste en una sencilla aplicación que calcula incertidumbre a partir de niveles acusticos medidos.
OBJETIVO: consiste en la siguiente implementación :
1- De un stringgrid donde se han introducido valores, almacena en un array de array de double.
2- cada fila corresponde a una frecuencia y cada columna a un ensayo (total 10 columnas con valores,es decir ensayos) + otra columna para mostrar el promedio de los 10 ensayos.
frecuencia ,ensayo1, ensayo2 ,ensayo3..... ...... ........, ensayo10, PROMEDIO
125 Hz 20,45 18,98 15,67 ...... ....... .. 21,34, X
160 Hz
200 Hz
...
5000 H
IMPLEMENTACIÓN:
procedure TPrincipal.B_validadatoClick(Sender: TObject);
//Procedimiento Onclick del objeto validadato.
//Procede en almacenar los datos ubicados en las celdas de los stringgrid
//en diferentes array
var j:integer; //filas
i:integer; //columnas
begin
SetLength(matriz_le,tabla_le.RowCount,tabla_le.ColCount);
for j:=1 to (tabla_le.RowCol-1)do
begin
for i:=1 to(tabla_le.ColCount-2)do
begin
matriz_le[i,j]:=StrToFloat(tabla_le.Cells[i,j]);//lee tabla_le y almacena en matriz_le
//FormatFloat('###,###,##0.00',matriz_le[i,j]);
end;
matriz_le[11,j]:=0.00; //inicializa la columna 11 (promedios) de matriz_le
// FormatFloat('###,###,##0.00',matriz_le[11,j]);
end;
for j:=1 to (tabla_le.RowCol-1) do
begin
for i:=1 to (tabla_le.ColCount-2) do
begin
matriz_le[11,j]:=matriz_le[11,j]+(Power(10,(matriz_le[i,j]/10))); // Sumatorio(dB-> lineal)
tabla_le.Cells[i,j]:=FloatToStr(matriz_le[i,j]); //muestro toda la matriz:le
end;
matriz_le[11,j]:=(matriz_le[11,j]/(tabla_le.ColCount-2)); //Promedia valor en lineal
matriz_le[11,j]:=10*(log10((matriz_le[11,j]))); //Paso a logaritmico (dB)
FormatFloat('###,###,##0.00',matriz_le[11,j]);
tabla_le.Cells[11,j]:=FloatToStr(simpleRoundTo(matriz_le[11,j],-2){matriz_le[11,j]});
end;
end;// Validadato
ERROR / PROBLEMA:
1. Acces violation at addres 004A4... in module '______ .exe'.Write of addres 00000008
2. Project ________.exe raised exception class E invalid Op with message 'Invalid floating point operation'.Process stopped.Use Step or Run to continue.
Muchas gracias por vuestro tiempo y conocimientos, agradezco toda la ayuda posible, no entiendo que estoy haciendo mal.
GRACIAS DE NUEVO
soy nuevo en esto(delphi 7) , por eso ruego me disculpeis si mis preguntas no son con el máximo rigor de programación. Estoy realizando el proyecto final de carrera que consiste en una sencilla aplicación que calcula incertidumbre a partir de niveles acusticos medidos.
OBJETIVO: consiste en la siguiente implementación :
1- De un stringgrid donde se han introducido valores, almacena en un array de array de double.
2- cada fila corresponde a una frecuencia y cada columna a un ensayo (total 10 columnas con valores,es decir ensayos) + otra columna para mostrar el promedio de los 10 ensayos.
frecuencia ,ensayo1, ensayo2 ,ensayo3..... ...... ........, ensayo10, PROMEDIO
125 Hz 20,45 18,98 15,67 ...... ....... .. 21,34, X
160 Hz
200 Hz
...
5000 H
IMPLEMENTACIÓN:
procedure TPrincipal.B_validadatoClick(Sender: TObject);
//Procedimiento Onclick del objeto validadato.
//Procede en almacenar los datos ubicados en las celdas de los stringgrid
//en diferentes array
var j:integer; //filas
i:integer; //columnas
begin
SetLength(matriz_le,tabla_le.RowCount,tabla_le.ColCount);
for j:=1 to (tabla_le.RowCol-1)do
begin
for i:=1 to(tabla_le.ColCount-2)do
begin
matriz_le[i,j]:=StrToFloat(tabla_le.Cells[i,j]);//lee tabla_le y almacena en matriz_le
//FormatFloat('###,###,##0.00',matriz_le[i,j]);
end;
matriz_le[11,j]:=0.00; //inicializa la columna 11 (promedios) de matriz_le
// FormatFloat('###,###,##0.00',matriz_le[11,j]);
end;
for j:=1 to (tabla_le.RowCol-1) do
begin
for i:=1 to (tabla_le.ColCount-2) do
begin
matriz_le[11,j]:=matriz_le[11,j]+(Power(10,(matriz_le[i,j]/10))); // Sumatorio(dB-> lineal)
tabla_le.Cells[i,j]:=FloatToStr(matriz_le[i,j]); //muestro toda la matriz:le
end;
matriz_le[11,j]:=(matriz_le[11,j]/(tabla_le.ColCount-2)); //Promedia valor en lineal
matriz_le[11,j]:=10*(log10((matriz_le[11,j]))); //Paso a logaritmico (dB)
FormatFloat('###,###,##0.00',matriz_le[11,j]);
tabla_le.Cells[11,j]:=FloatToStr(simpleRoundTo(matriz_le[11,j],-2){matriz_le[11,j]});
end;
end;// Validadato
ERROR / PROBLEMA:
1. Acces violation at addres 004A4... in module '______ .exe'.Write of addres 00000008
2. Project ________.exe raised exception class E invalid Op with message 'Invalid floating point operation'.Process stopped.Use Step or Run to continue.
Muchas gracias por vuestro tiempo y conocimientos, agradezco toda la ayuda posible, no entiendo que estoy haciendo mal.
GRACIAS DE NUEVO
Valora esta pregunta
0