Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Me imagino que te refieres a esta parte:

Código Delphi [-]
    if FCt2 < 0 then
    begin
      for I := 81 to 162 do
        FSudoku := FSudoku + IntToStr(Q[FCt][i]);
      Break
    end;

Es un pequeño error, en realidad el ciclo for debería ir de 81 a 161... la posición 162 en la lista Q[FCt] guarda el valor de un índice y este al final del proceso tiene como valor -1, por lo cual no debería agregarse a la cadena de la solución.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #2  
Antiguo 21-11-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
¡Perfecto! maeyanes

Esa era la causa.

Como te dije estoy intentando adaptarlo a FMX (Android).

El generador, únicamente cambiando la localización de "data.txt", funciona correctamente.

En cambio, el solucionador me está dando problemas.
El primero era en el procedure "Solve". Consistía en que la function "Solver" me daba un error de "Arguments out of range", he supuesto que podía deberse a que las Strings en FMX comienzan por Cero y he modificado lo siguiente:
Código Delphi [-]
for I := 1 to Length(ASudoku) do
    if CharInSet(ASudoku[i], ['1'..'9']) then
      SetValue(I - 1, ASudoku[i], S);
  if Solver(S)...........
Cambiándolo por esto:
Código Delphi [-]
for I := 0 to Length(ASudoku) -1 do
    if CharInSet(ASudoku[i], ['1'..'9']) then
      SetValue(I , (ASudoku.Substring(I,1).ToInteger), S);
  if Solver(S).........

Ahora la function "Solver" ya devuelve TRUE, pero el procedure "Solve" ahora me está dando error en
Código Delphi [-]
Cons(Q[0]);

Estoy peleando con ello hace 2 días.

Si tú sabes porqué y, (abusando de tu generosidad), me sacas de dudas te estaré todavía más agradecido (si es que fuera posible).

En cualquier caso, infinitas gracias y un saludo muy afectuoso.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #3  
Antiguo 21-11-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Sin saber exactamente cual es el error que te reporta Delphi, y leyendo lo de los strings en Android, puedo "adivinar" que el error en Cons(Q[0]); se produce a causa del procedimiento SplitStrToIntList en la unidad SudokuUtils.pas:

Código Delphi [-]
function SplitStrToIntList(const Str: string): TList<Integer>;
var
  I: Integer;

begin
  Result := TList<Integer>.Create;
  if Str = '' then
    Result.Add(-1)
  else
    for I := 1 to Length(Str) do // <--- string basado en índice 1, no 0 como Android...
      Result.Add(StrToInt(Str[i]))
end;

Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #4  
Antiguo 21-11-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola maeyanes.

El error es: " in not a valid integer value

Gracias por estar ahí.

Compruebo lo que me has comentado.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #5  
Antiguo 21-11-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola maeyanes.
Toda la razón en SplitStrToIntList .
Hemos eliminado el error " is...
Ahora tendré que volver a Solve, pues se queda enganchado en un bucle y creo que es alli.
Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #6  
Antiguo 21-11-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola maeyanes.
Toda la razón en SplitStrToIntList .
Hemos eliminado el error " is...
Ahora tendré que volver a Solve, pues se queda enganchado en un bucle y creo que es alli.
Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 21-11-2017 a las 22:17:42.
Responder Con Cita
  #7  
Antiguo 22-11-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Todo Perfecto, maeyanes.

Estaba cometiendo yo un error. No había tenido en cuenta otra peculiaridad de Android. Sabemos que Windows realiza las instrucciones secuencialmente, pero Android tiene una peculiaridad: los procedimientos los termina completos. Me explico, yo estaba utilizando en mi aplicación de prueba el procedimiento siguiente:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
   Resol : TS;
begin
Resol := TS.Create;
Resol.Solve(Label1.Text);
Label2.Text := Resol.Sudoku;
Resol.Destroy;
Como Android realiza todas las instrucciones del procedimiento en bloque, destruía la clase Resol antes de pasar los valores a Label1.Text y se quedaba colgado el programa.

De esta forma:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
   Resol : TS;
begin
Resol := TS.Create;
Resol.Solve(Label1.Text);
Label2.Text := Resol.Sudoku;
//Resol.Destroy;

Todo funciona perfecto.
Millones de gracias por tu ayuda. Un saludo muy afectuoso.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #8  
Antiguo 22-11-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Vaya extraño comportamiento el de Android...

Que bueno que ya quedó...


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
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
Acceder a Objetos desde una funcion darkmir C++ Builder 3 09-12-2013 00:12:41
Traducción de función desde delphi Novás PHP 1 14-07-2010 18:46:40
llamar una función desde un formulario cjamacaru PHP 1 03-12-2009 12:52:53
Array devuelto desde una función r1d2m3 OOP 3 26-11-2009 01:28:20
Llamar a una función de una DLL desde PHP MON___ Varios 4 05-10-2007 23:06:48


La franja horaria es GMT +2. Ahora son las 17:07:53.


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