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 una 'Aplicación para presentar fotos' (https://www.clubdelphi.com/foros/showthread.php?t=73462)

pacodelphi 25-04-2011 10:59:10

Problema con una 'Aplicación para presentar fotos'
 
Buenos días.

Primero quiero decir que abro este hilo después de buscar en otros hilos una solución a mi problema, a continuación presento mi problema:

Primero quiero empezar diciendo que para mi aplicación utilizo delphi7 bajo Windows vista.

Ahora el problema, mi aplicación consiste en un 'presentador de imágenes', para ello cuento en el formulario con un componente Timage, un botón (start/stop) y un reloj para un contador.

La aplicación funciona del siguiente modo: para hacer la presentación de imágenes, busco en un directorio imágenes con extensión *.bmp, para ello utilizo las funciones FindFirst y FindNext, y haciendo uso de unas variables y del reloj hago que la imágenes se muestren una tras otra en el Timagen.


Hasta ahí todo bien el problema está que cuando ejecuto la aplicación, si muevo el formulario por la pantalla, o algún otro formulario que también tenga el escritorio, en el instante de transición de una fotografía a otra me salta el siguiente error: 'Access violation at address 7789DE2D in module ntdll.dll. Write of address C68383C9'.

He pensado que puede ser algún fallo de refresco del formulario o del Timge, pero estoy un poco perdido. ¿Alguien me puede ayudar?.

Un saludo.

ecfisa 25-04-2011 13:00:43

Hola pacodelphi y bienvenido a los foros de Club Delphi.

Con la información que das, solamente te puedo decir que el error Access Violation (generalmente) se debe a que estas intentando utilizar o liberar un recurso no disponible.

Cita:

haciendo uso de unas variables y del reloj hago que la imágenes se muestren una tras otra en el Timagen.
¿En que tipo de variable almacenas los nombres de los archivos de imágenes? ¿ Usas una lista ? ¿ La creas ? ¿ La liberas ?
¿Cargas directamente las imágenes al TImage desde el disco? ¿ Usas TBitmap, TStream ?

Ayudaría mucho que pusieras algo de código...

Un saludo.

pacodelphi 25-04-2011 13:19:04

Perdon (soy nuevo en esto) voy a ver como puedo poner el código estructurado y lo subo.

pacodelphi 25-04-2011 13:43:30

Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
var 
  Busqueda1: TSearchRec;  
begin       
  if z=0 then
  begin
    Memo1.Lines.Add('El directorio actual es:C:\FOTOS\PUBLICIDAD\');
    form1.Timer1.Interval:= 2000;
    FindFirst('C:\FOTOS\PUBLICIDAD\'+'*.bmp',faAnyFile, Busqueda1);
    Memo1.Lines.Add(Pchar(Busqueda1.name));
    Image1.Picture.LoadFromFile('C:\FOTOS\PUBLICIDAD\'+Busqueda1.Name);
    Image1.Update;
    //ShowMessage( SysErrorMessage(GetLastError()) );
    //Image1.Update;
    z:=1;
    //p:=0;
  end     
  else
  begin           
    p:=FindNext( Busqueda1 );
    if p <> 0 then
    begin
      //form1.Timer1.enabled:=false;                 
      z:=0;                 
      ShowPublicidad();
      exit;
    end;
    Memo1.Lines.Add(Pchar(Busqueda1.name));
    Image1.Picture.LoadFromFile('C:\FOTOS\PUBLICIDAD\'+Busqueda1.Name);
  end;// end if
end;

ecfisa 25-04-2011 15:14:24

Hola pacodelphi.

Me tomé la libertad de hacer el código de cero. Cambié el Memo por un ListBox así se selecciona el nombre de la imágen a medida que se muestra y algunos detalles más. (Espero haber interpretado bién lo que buscas...)

Te adjunto el código para que lo puedas modificar a gusto o sacar algunas ideas.

Un saludo.

pacodelphi 25-04-2011 18:51:31

Gracias
 
Hola ecfisa.

Gracias por tu ejemplo, ya que la solución que propones, con algunos cambios, es mucho mejor que la mía y me viene perfecto, ya no tengo los errores y me funciona perfecto. Muchas gracias de nuevo.

Un cordial saludo. Paco.


La franja horaria es GMT +2. Ahora son las 15:33:35.

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