Ver Mensaje Individual
  #10  
Antiguo 27-09-2013
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Reputación: 13
danielmj Va por buen camino
Hola, gracias por los consejos, os pongo el código...

Código Delphi [-]

...
LongFich:= (2147483648 div 1024);        //Se convierten 2GB en Bytes a Kbytes
      FileQ := TFileStream.Create(Archivo_F, fmOpenRead or fmShareDenyWrite);
    try
      for i := 1 to Trunc((FileQ.Size) / LongFich) + 1 do
      begin
        principal.prBar.Max:= (FileQ.Size div LongFich);
        principal.prBar.Position:= i;
        principal.prBar.Refresh;
...

Lo que trato de conseguir es que el progreso de la barra avance segun se divida el tamaño del archivo entre la cantidad elegida, en este caso son 2Gb, pero podrian ser 4,6 u 8,2 etc... Es en los casos donde ese tamaño es = o > a 2Gb donde falla. Siempre que sea = o < a 1Gb todo funciona perfectamente includo el progreso de la barra. Y estoy como loco haciendo variaciones en la division. He probado a dividir los 2 Gb entre 1024 para pasarlo a Kbytes, sino me devuelve el mensaje "barra de progreso fuera de rango", he probado a dividir entre 1024 el tamaño del archivo y luego el resultado dividirlo entre los 2Gb div 1024 y el resultado de esto asignarlo a la propiedad Max de la barra, pero no consigo "sacar" archivos de 2Gb a partir del archivo original de 13 Gb (es un ejemplo), solo de 2Mb. O eso, o el mensaje de "... fuera de rango".

Sé que el error debe estar entre el limite de progressbar.max y la/s divisiones, pero no consigo verlo por muchas vueltas que le doy.

Saludos y gracias a todos.
Responder Con Cita