Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Crash en programa, o Bucle Infinito?

Salud amigos donde quiera que se encuentren

Hoy les traigo un pequeño inconveniente que presenta mi codigo
aun no lo he podido descubrir aunque continuo buscando a ver
donde estara ese nudo...
el problema es que cuando lo ejecuto
y le doy al boton REPARTIR, se queda colgado.

Ademas no cambia la imagen en los procedimientos:

Código Delphi [-]
procedure TForm2.BotRepartirMouseEnter(Sender: TObject);

Código Delphi [-]
procedure TForm2.BotRepartirMouseLeave(Sender: TObject);

lo que es completamente extraño, ya que este Form2
es llamado desde un Form1, en el cual el boton efectivamente
funciona con el mismo procedimiento.

ese es un problemita que me paso en un programa anterior,
ahora el problema del bucle o crash creo que esta en el procedimiento:

Código Delphi [-]
Procedure Barajar();

o en su defecto:

Código Delphi [-]
Procedure Repartir();

Agradeceria mucho de su parte si lograran conseguir el error
continuare buscando, en caso de encontrarlo, como siempre colocare la respuesta aqui.

Anexo el codigo

Saludos
Best,
Martin


Código Delphi [-]
unit Versus;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Math, pngimage;

type
  TForm2 = class(TForm)
    Tablero: TImage;
    BotRepartir: TImage;
    ImagenCentral: TImage;
    procedure BotRepartirClick(Sender: TObject);
    procedure BotRepartirMouseEnter(Sender: TObject);
    procedure BotRepartirMouseLeave(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  VCartas:      Array[1..40]of Integer;           //Vector para el mazo
  VEl:          Array[1..20]of Integer;            //Vector para las cartas de EL
  VYo:          Array[1..20]of Integer;            //Vector para las cartas de YO

implementation
{$R *.dfm}


Procedure InicializarVectores();
Var
   I:Integer;
Begin
//Inicializamos los 3 Vectores en 0
  For I:=1 to 40 do
    VCartas[i]:=0;
  For I:=1 to 20 do
    VEl[i]:=0;
    VYo[i]:=0;
End;

Procedure Barajar();
Var
  i, NumRandom, Aux, j:integer;
Begin
  InicializarVectores();
  i:=1;
  while i<=40 do
    begin
      NumRandom:=RandomRange(1,40)+1;
      Aux:=0;
      for j:=1 to 40 do
        begin
          if VCartas[j]=NumRandom then
          begin
            Aux:=1;
          end;
        end;
      if Aux=0 then
        begin
          VCartas[i]:=NumRandom;
        end;
      if VCartas[i]>0 then
        begin
          i:=i+1;
        end;
   end;
End;

Procedure Repartir();
Var
   I, Par, Impar:Integer;
Begin
     Par:=2;
     Impar:=1;
     for I:=1 to 20 do
       VEl[i]:=VCartas[Impar];
       VYo[i]:=VCartas[Par];
       Impar:=Impar+2;
       Par:=Par+2;
End;

procedure TForm2.BotRepartirMouseEnter(Sender: TObject);
begin
   Form2.BotRepartir.Picture.LoadFromFile(Getcurrentdir()+'\Imagenes\Controles\BotRepartirPres.bmp');
end;

procedure TForm2.BotRepartirMouseLeave(Sender: TObject);
begin
   Form2.BotRepartir.Picture.LoadFromFile(Getcurrentdir()+'\Imagenes\Controles\BotRepartirNoPres.bmp');
end;

procedure TForm2.BotRepartirClick(Sender: TObject);

Begin
     Barajar();
     Sleep (1000);
     Form2.ImagenCentral.Picture.LoadFromFile(Getcurrentdir()+'\Imagenes\Etiquetas\Barajando.bmp');
     Sleep (2000);
     Form2.ImagenCentral.Picture.LoadFromFile('');
     Repartir();

End;

end.
Responder Con Cita
  #2  
Antiguo 08-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.076
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé qué problema tendrá, pero sí que veo algo poco práctico: vas cargando unas imágenes del disco, constantemente.
¿Por qué no las cargas en el programa y te ahorras de estar cargando una y otra vez, otra vez, y otra vez...?
Responder Con Cita
  #3  
Antiguo 08-06-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No sé qué problema tendrá, pero sí que veo algo poco práctico: vas cargando unas imágenes del disco, constantemente.
¿Por qué no las cargas en el programa y te ahorras de estar cargando una y otra vez, otra vez, y otra vez...?
Porque no se como hacerlo
Si compartieras tu sabiduria conmigo
Responder Con Cita
  #4  
Antiguo 08-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.076
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sin son pequeñas puedes cargalas en un TImageList, por ejemplo.
O usa un Timage para cada una, y lo pones visible o invisible, según te haga falta.
Responder Con Cita
  #5  
Antiguo 08-06-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sin son pequeñas puedes cargalas en un TImageList, por ejemplo.
O usa un Timage para cada una, y lo pones visible o invisible, según te haga falta.
Por ejemplo:
las dos imagenes del boton repartir, son del mismo tamaño
140x40, y la del mensaje Barajando es de 339x115

y todavia faltan las 40 cartas que son de 55x82
hay un problema en el boton repartir, no hace el cambio
de imagen cuando paso el mouse por el.

pero en el Form1 funciona correctamente con otro boton
buscare sobre TImageList
Responder Con Cita
  #6  
Antiguo 08-06-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Nota:
Cuando corro el programa y le doy click al boton Repartir,
el programa se cuelga por un par de segundos,
y luego me pide continuar o interrumpir el proceso
le doy a continuar y me aparece un mensaje con lo siguiente:

Uknown picture file extension (.)

a lo que asumo que el problema es con alguna de las imagenes...
ya realmente que no se que hacer con esto, buscare sobre
como almacenar las imagenes como en una base de datos
y usarla desde alli como dice Casimiro
Responder Con Cita
  #7  
Antiguo 08-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.076
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Wink

Cita:
Empezado por martini002 Ver Mensaje
Cuando corro el programa y le doy click al boton Repartir,
el programa se cuelga por un par de segundos,
Supongo que "se cuelga un par de segundos" es simplemente porque tienes un sleep de retraso
Código Delphi [-]
Barajar();
Sleep (1000);  //  1 segundo
Form2.ImagenCentral.Picture.LoadFromFile(Getcurrentdir()+'\Imagenes\Etiquetas\Barajando.bmp');
Sleep (2000);  // 2 segundos
Form2.ImagenCentral.Picture.LoadFromFile('');
Repartir();
Si piensas que alguna imagen está mal, prueba el programa sin imágenes, a ver qué hace.
Pon en comentario las líneas donde cargas imágenes... y prueba.

Código Delphi [-]
Barajar();
Sleep (1000);  //  1 segundo
// Form2.ImagenCentral.Picture.LoadFromFile(Getcurrentdir()+'\Imagenes\Etiquetas\Barajando.bmp');
Sleep (2000);  // 2 segundos
// Form2.ImagenCentral.Picture.LoadFromFile('');  // por cierto, aquí no cargas nada, puede ser ese el error
Repartir();
Responder Con Cita
  #8  
Antiguo 08-06-2012
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 13
martini002 Va por buen camino
Este es el mensaje de error que me muestra la consola

Código Delphi [-]
First chance exception at $75719617. Exception class EInvalidGraphic with message 'Unknown picture file extension (.)'. Process Proyecto40Base.exe (5608)


Edito:
No habia visto tu comentario en el codigo.
"// por cierto, aquí no cargas nada, puede ser ese el error"

Excelente
ese es el problema, no lo reconoce, lo que yo queria hacer alli era
que la imagen fuera removida, y que quedara en vacio
el Timage, ahora el problema es hacer que funcione el boton
cuando le paso el mouse no cambia la imagen,
esto ya me paso en otro programita,
cual sera la forma de solucionarlo?

Problema del crash Resuelto

Última edición por martini002 fecha: 08-06-2012 a las 13:20:26.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Server Crash en Nevrona mlara Noticias 5 21-02-2012 13:51:24
Ejemplo de ciclo o bucle infinito ecfisa Humor 4 09-07-2010 17:44:59
Interbase server crash! fredycc Firebird e Interbase 4 08-01-2009 15:22:31
Bucle infinito al intentar abrir un tableset Shikanda Conexión con bases de datos 3 29-08-2007 09:18:00
bucle infinito emeceuy Varios 10 20-07-2007 20:28:55


La franja horaria es GMT +2. Ahora son las 18:37:57.


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
Copyright 1996-2007 Club Delphi