Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con StringGrid (https://www.clubdelphi.com/foros/showthread.php?t=1343)

julian_ch 11-06-2003 12:57:01

Problema con StringGrid
 
Saludos a todos!!!
Mi problema es el siguiente, tengo un StringGrid de 8 columnas y 57 filas, al arrancar la aplicacion relleno la primera fila y la primera columna (no he encontrado de hacerlo en diseño), el problema es que cuando relleno las 57 filas desde un array me da error si las caro todas, sin embargo si cargo 20 o menos todo de PM, k puede ser?? llevo todo la mañana liado con esto y no le encuentro solucion, gracias peña!!

shaktale 11-06-2003 13:16:36

Me parece raro lo que comentas.

Lo unico que se me ocurre es que hay que tener en cuenta que la 1ª col es la 0 no la uno, si defines 57 la ultima es la 56 y no la 57

julian_ch 11-06-2003 13:19:33

Ya se k parece raro pero es asi, lo de la columna 0 ya lo sabia pero de todas formas si cojo y en lugar de poner las 57, pongo 20, sean las k sea, del principio, del final o sueltas no pasa nada, con 30 por ejemplo si.

andres1569 11-06-2003 16:04:15

Supongo que utilizas la propiedad Cells para acceder a cada Columna-Fila.

Quizás si indicas el código podamos detectar dónde da el error.

julian_ch 11-06-2003 16:12:43

Simplemente es esto, yo creo k esta bien:

for i:=0 to sgCitas.RowCount-1 do
sgCitas.Cells[0,i]:=ArrayHoras[i];

Luego he probado con esto:
sgCitas.Cells[0,1]:=ArrayHoras[1];
sgCitas.Cells[0,2]:=ArrayHoras[2];
sgCitas.Cells[0,3]:=ArrayHoras[3];
sgCitas.Cells[0,4]:=ArrayHoras[4];
sgCitas.Cells[0,5]:=ArrayHoras[5];
sgCitas.Cells[0,6]:=ArrayHoras[6];
sgCitas.Cells[0,7]:=ArrayHoras[7];
sgCitas.Cells[0,8]:=ArrayHoras[8];
sgCitas.Cells[0,9]:=ArrayHoras[9];
.......
sgCitas.Cells[0,57]:=ArrayHoras[57];

Si pongo las 57 lineas tb falla pero si pongo solo 20 no :confused:

andres1569 11-06-2003 16:21:57

Cita:

Si pongo las 57 lineas tb falla pero si pongo solo 20 no
¿Y si pones 56 también falla? ¿RowCount es 57 ó 58?

shaktale 11-06-2003 16:25:21

En principio parece que estas relleneando bien el grid.

¿Has probado si el problema no está en el grid sino en ArrayHoras?

julian_ch 11-06-2003 16:25:29

ponga lo k ponga k sea mayor que 20 falla.
rowcount=57

marcoszorrilla 11-06-2003 16:53:09

Mira esta simple prueba y no falla:

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
I:Integer;
begin
  for I:=0 to StringGrid1.Rowcount - 1 do
  begin
  StringGrid1.cells[0,i]:=IntToStr(i);
  end;

end;

El stringGrid tiene 57 filas y me rellena desde 0 a56 sin ningún problema, luego el error tiene que estar en la matriz, que no estamos viendo su definicion?

Un Saludo.

__cadetill 11-06-2003 17:07:46

Este ejemplo esta probado y funciona

Código:

procedure TForm1.Button1Click(Sender: TObject);
var a : array of integer;
    i : integer;
begin
    SetLength(a, StringGrid1.RowCount);
    for i := 0 to High(a) do
      a[i] := i;

    for i := 0 to StringGrid1.RowCount - 1 do
      StringGrid1.Cells[0, i] := IntToStr(a[i]);
end;

Tengo :
* un TStringGrid al que le he puesto RowCount = 60
* una variable de tipo array de integers para hacerlo igual que tu, el cual inicializo en el primer bucle
* en el segundo bucle cargo el StringGrid

Me funciona sin problemas. Haz un debug a ver donde esta fallando y el tipo de error que te da tambien podria ayudar a solucionarlo

julian_ch 12-06-2003 09:21:19

Me da este error:

Access violation at address 0044CD3D in module 'PLANING.EXE'.
Read for address FFFFFFF0.

El array lo defino asi:

ArrayHoras : array[1..57] of string = ('08:00','08:15','08:30','08:45','09:00','09:15','09:30','09:45','10:00',
'10:15','10:30','10:45','11:00','11:15','11:30','11:45','12:00','12:15',
'12:30','12:45','13:00','13:15','13:30','13:45','14:00','14:15','14:30',
'14:45','15:00','15:15','15:30','15:45','16:00','16:15','16:30','16:45',
'17:00','17:15','17:30','17:45','18:00','18:15','18:30','18:45','19:00',
'19:15','19:30','19:45','20:00','20:15','20:30','20:45','21:00','21:15',
'21:30','21:45','22:00');

En el grid la propiedad rowcount = 58 y poniendo simplemente

for i:=1 to sgCitas.RowCount-1 do
sgCitas.Cells[0,i]:=IntToStr(i);
ya me falla, no deberia pero no entiendo pk lo hace

__cadetill 12-06-2003 12:26:36

Acabo de probar esto

Código:

procedure TForm1.Button1Click(Sender: TObject);
const ArrayHoras : array[1..57] of string =
  ('08:00','08:15','08:30','08:45','09:00','09:15','09:30','09:45','10:00',
  '10:15','10:30','10:45','11:00','11:15','11:30','11:45','12:00','12:15',
  '12:30','12:45','13:00','13:15','13:30','13:45','14:00','14:15','14:30',
  '14:45','15:00','15:15','15:30','15:45','16:00','16:15','16:30','16:45',
  '17:00','17:15','17:30','17:45','18:00','18:15','18:30','18:45','19:00',
  '19:15','19:30','19:45','20:00','20:15','20:30','20:45','21:00','21:15',
  '21:30','21:45','22:00');
var i : integer;
begin
    for i := 1 to sgCitas.RowCount - 1 do
        sgCitas.Cells[0,i] := arrayHoras[i];
end;

haciendo un copy-paste de tu array y..... sin problemas

No podria venir el error por otro lado? :confused:


La franja horaria es GMT +2. Ahora son las 17:03:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi