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 26-11-2015
isracdc isracdc is offline
Miembro
 
Registrado: nov 2015
Posts: 24
Poder: 0
isracdc Va por buen camino
Error AppHamgB1

Hola a todos, tengo una consulta, tengo un Form y una Unit, con este codigo;

Código Delphi [-]
unit uFrmPrueba;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uBase64;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=Encode64(StrToInt(Edit1.Text));
end;

end.

y en la unit este codigo
Código Delphi [-]
unit uBase64;

interface



  function Encode64(S: Integer): string;

implementation

uses uFrmPrueba;
const
Codes64: array[0..63] of string = ('0','1','2','3','4','5','6','7','8','9','A','B','C',
                                  'D','E','F','G','H','I','J','K','L','M','N','O','P','Q',
                                  'R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
                                    'g','h','i','j','k','l','m','n','o','p','q','r','s','t',
                                    'u','v','w','x','y','z','+','/');

function Encode64(S: Integer): string;

var
  cociente, resto: Integer;
  cadena: string;
begin
  cociente:=1;
  cadena:='';
  while (cociente>0) do begin
    cociente:=S div 64;
    resto:=S mod 64;
    cadena:=cadena+ Codes64[resto];
    S:=cociente;
  end;
  Result:=cadena;
end;
end.

no es nada complejo, pero al querer ejecutar, me sale el error de AppHangB1 y se me cierra el Delphi, trabajo con la version XE, y al ir al administrador de tareas de Windows, hay 3 procesos con el nombre de mi ejecutable y solo puede cerrarse uno, ¿Que puede ser?
Responder Con Cita
  #2  
Antiguo 26-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
En Delphi 2010 no parece dar problemas

Que valor exactamente genera la excepcion? En que punto exactamente?

PD: Porque tenes una referencia circular innecesaria? (uses UfrmPrueba)?
Responder Con Cita
  #3  
Antiguo 26-11-2015
isracdc isracdc is offline
Miembro
 
Registrado: nov 2015
Posts: 24
Poder: 0
isracdc Va por buen camino
//A ver...

.....pues simplemente no me deja Ejecutar la aplicacion, al querer ejecutar, Delphi deja de funcionar, es una funcion que me codifica el texto del edit1(que lo transformo a entero, ya que la funcion recibe un entero), al presionar el boton, se muestra el texto codificado en el edit2.
....buena observacion Agustin Ortu, creo q deberia quitar el uses (uses UfrmPrueba) de la Unit, verdad?
Responder Con Cita
  #4  
Antiguo 26-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Por cierto este es el codigo que use

Código Delphi [-]
const
  Codes64: array [0 .. 63] of string = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
    'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c',
    'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    '+', '/');

function Encode64(S: Integer): string;
var
  cociente, resto: Integer;
  cadena: string;
begin
  cociente := 1;
  cadena := '';
  while cociente > 0 do
  begin
    cociente := S div 64;
    resto := S mod 64;
    cadena := cadena + Codes64[resto];
    S := cociente;
  end;
  Result := cadena;
end;

procedure Test(const BigNumber: Integer; Output, Errors: TStrings);
var
  I, LValue: Integer;
  LBase64: string;
begin
  Output.Clear;
  Errors.Clear;

  Output.BeginUpdate;
  Errors.BeginUpdate;
  try
    Randomize;
    for I := 1 to 500 do
    begin
      LValue := Random(BigNumber);
      try
        LBase64 := Encode64(LValue);
        Output.Add(Format('LValue %d ---> Encode64: %s', [LValue, LBase64]));
      except
        on E: Exception do
          Errors.Add(Format('ERROR: LValue %d, Exception %s', [LValue, E.Message]));
      end;
    end;
  finally
    Output.EndUpdate;
    Errors.EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(StrToInt(Edit1.Text), Memo1.Lines, Memo2.Lines);
end;
Responder Con Cita
  #5  
Antiguo 26-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Entonces creo que tenes otro problema, compilas y generas el ejecutable pero despues no te deja correrlo??

No creo que tenga mucho que ver el codigo a menos que tengas codigo de inicializacion en algun lado
Responder Con Cita
  #6  
Antiguo 26-11-2015
isracdc isracdc is offline
Miembro
 
Registrado: nov 2015
Posts: 24
Poder: 0
isracdc Va por buen camino
//Ups

Tratare con el codigo que me enviaste.
Pues parece que compila todo bien, ya que me detecto algunos errores en el codigo, pero al corregir todo, cuando supongo q no hay errores y del compilador pase al ejecutable, ahi es donde el Delphi se me cuelga, no se donde podria tener otro codigo de inicializacion como mencionas, pq ese Form y esa Unit son lo unico que tengo en el proyecto, o donde podria estar ese codigo que dices?
Responder Con Cita
  #7  
Antiguo 26-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cita:
Empezado por isracdc Ver Mensaje
Tratare con el codigo que me enviaste.
Pues parece que compila todo bien, ya que me detecto algunos errores en el codigo, pero al corregir todo, cuando supongo q no hay errores y del compilador pase al ejecutable, ahi es donde el Delphi se me cuelga, no se donde podria tener otro codigo de inicializacion como mencionas, pq ese Form y esa Unit son lo unico que tengo en el proyecto, o donde podria estar ese codigo que dices?

Por ejemplo, en un FormCreate o algun constructor

Entonces basicamente no podes crear ninguna aplicacion?? Yo creo que los tiros van por otro lado y el codigo no tiene nada que ver
Responder Con Cita
  #8  
Antiguo 26-11-2015
isracdc isracdc is offline
Miembro
 
Registrado: nov 2015
Posts: 24
Poder: 0
isracdc Va por buen camino
//A ver...

Agustin Ortu, mil gracias por tu observacion, esa referencia cirtular era el error q no me dejaba ejecutar, simplemente la quite y el programa corrio con normalidad, muchas gracias por notar ese error, me salvaste
Responder Con Cita
  #9  
Antiguo 26-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Que extraño! No deberia generar problemas, fue solamente una observacion..

A mi me funciona:

Código Delphi [-]
unit UMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, UBase64;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  ShowMessage(Encode64(5));
end;

end.

Por otro lado.. mejor! Las referencias circulares mejor obviarlas
Responder Con Cita
  #10  
Antiguo 27-11-2015
isracdc isracdc is offline
Miembro
 
Registrado: nov 2015
Posts: 24
Poder: 0
isracdc Va por buen camino
//A ver...

En eso tienes razon, no TENDRIA que generar problemas, pero al quitar esa referencia el programa se ejecuto con normalidad, o.......sera la instalacion del Delphi, tal vez?
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
Intraweb - Database Server Error: SQL State:08001, SQL Error Code: 17 bitbow Delphi para la web 2 12-11-2015 22:28:15
Error reading Form. Class TFusionInterop not found. Ignore this error. jo3litro Varios 1 14-08-2015 23:00:08
ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Token MALBOTO22 PHP 8 06-05-2015 19:22:39
error en la prueba de conexion al inicializar al proveedor. error de autenticacion ygeraldino Conexión con bases de datos 12 20-06-2011 23:51:18
error:[Fatal Error] Unit1.pas(7): Unit ZDbcConnection was compiled with a different.. karaoke Conexión con bases de datos 2 19-12-2007 10:22:36


La franja horaria es GMT +2. Ahora son las 14:05:52.


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