Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Excepcion al generar contraseña (https://www.clubdelphi.com/foros/showthread.php?t=87466)

danielmj 09-01-2015 13:26:46

Excepcion al generar contraseña
 
Hola, es mi primera aplicacion para android, se trata de un generador de claves pero me da error (adjunto capturas) por otra parte el código es este:

Función generar clave
Código Delphi [-]
function RandomPassword(PLen: Integer): string;
var
  str: string;

begin
  Randomize;
  //string with all possible chars
  case form1.cmbTipo.index of
    0: begin
        str    := num;
    end;
    1: begin
        str    := letras;
    end;
    2: begin
        str    := num+letras;
    end;
    3: begin
        str    := sim;
    end;
  end;
  Result := '';
  repeat
    Result := Result + str[Random(Length(str)) + 1];
  until (Length(Result) = PLen)
end;

Código del botón encargado de lanzar la función
Código Delphi [-]
procedure TForm1.GenClick(Sender: TObject);
begin
  valor:= 1; //-----> variable global de tipo byte
  memo.Text:= '';
  begin
      if opc1.IsChecked = true then
        begin
          memo.Lines.Add(RandomPassword(strToInt(opc1.Text)));
        end;

      if opc2.IsChecked = true then
        begin
          memo.Lines.Add(RandomPassword(strToInt(opc2.text)));
        end;

      if opc3.IsChecked = true then
        begin
          memo.Lines.Add(RandomPassword(strToInt(opc3.text)));
        end;

      if opc4.IsChecked = true then
        begin
          memo.Lines.Add(RandomPassword(strToInt(cmbTipo.Items.Text)));
        end;
    end;
    gen.Enabled:= false;
end;

Y esta la captura del error:


Si pulso sobre "Break", me marca esta línea que está dentro de la función:



Y esta la captura del movil:


Lo que si he observado es que si cambio el tipo de la variable "valor" de byte a integer, delphi no muestra ningún mensaje de error aunque si el movil, no sé si servirá de algo este dato. ¿Alguien puede sugerirme algo?
Gracias y un saludo.

Neftali [Germán.Estévez] 09-01-2015 14:36:18

Muestra primero a qué índice del string estás accediendo.
No sea que esté fuera de rango.

danielmj 10-01-2015 15:58:26

Hola Neftali, ¿a que te refieres con que muestre el indice al que accedo? lo que me tiene extrañado es que ya tengo una aplicacion terminada con este fin (claves), hecha en D7 y uso la misma función, sin embargo en la aplicacion para windows no da error y para android si.

Un saludo y gracias.

Neftali [Germán.Estévez] 10-01-2015 16:52:12

Me refería a esto. http://docwiki.embarcadero.com/RADSt...e_from_Desktop

Mira la parte que pone: "Use 0-Based Strings"

No se si tiene que ver, pero se me vino a la cabeza...

danielmj 11-01-2015 18:32:31

Hola, gracias voy a mirar ahora a ver que tal, no he podido responder antes, sorry.
Saludos.


La franja horaria es GMT +2. Ahora son las 02:33:17.

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