Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola,

He probado tu codigo ecfisa, en xe7 en compilacion no da error pero cuando ejecuto el exe generado...https://youtu.be/WI0CkLp5zEs
Me estoy volviendo loco ya. Decir que (por si sirve de algo) uso windows 10 en una pc nueva, es decir da el mismo error que aquella vez hace tiempo cuando use el listview para guardar contraseñas (en otra app). No sé que puede ser, ¿algo interno de xe7?
Y para salir de dudas he abierto tu programa en delphi 7 y va perfecto, carga perfectamente toda la informacion en el listview, asi que está claro, es cosa de xe7. Voy a ver si actualizandolo se arregla.
Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 22-10-2016 a las 19:46:36.
Responder Con Cita
  #2  
Antiguo 22-10-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Me quedé pensando... Aparentemente el problema se produce en la verificación de la firma, pero si en este caso no la necesitas podrías omitirla:
Código Delphi [-]
procedure TListView.SaveToFile(const FileName: TFileName);
var
  i, j, aux           : Integer;
  Stream              : TStream;
  str {, signat }     : string;
  ItemCount, SubCount : Word;
begin
begin
  // Crear archivo
  Stream := TFileStream.Create(FileName, fmCreate);

  { guardar firma
  signat := Name;
  aux    := Length(signat);
  Stream.Write(aux, SizeOf(aux));
  Stream.Write(PChar(signat)^, aux); }
...
end;

procedure TListView.LoadFromFile(const FileName: TFileName);
var
  Stream: TStream;
  i, j, aux: Integer;
  ItemCount, SubCount: Word;
  str{, signat}: string;
  it: TListItem;
begin
  // verificar existencia
  if not FileExists(FileName) then
    raise Exception.Create(Format('No se encuentra el archivo %s',[FileName]));
  // Abrir archivo
  Stream := TFileStream.Create(FileName, fmOpenRead);

  { leer firma
  Stream.Read(aux, SizeOf(aux));
  SetLength(signat, aux);
  Stream.Read(PChar(signat)^, aux);
   verificar firma
  if signat <> Name then
  begin
    Stream.Free;
    raise Exception.Create(Format('%s no es el archivo correcto',[FileName]));
  end;}
...
end;
Fijate, es sólo una prueba mas...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 22-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, gracias mañana cuando llegue a casa lo miro y te digo. Pero en realidad son dos problemas, lo de guardar y cargar ya lo tengo, lo conseguí antes de irme a trabajar, bueno más o menos, lo tengo encaminado, pero lo que ocurre es que cuando se guarda el contenido del listview, se hace mal, guarda números aleatorios del 1 al 9 cuando tendría que ser del 1 al 49 y además también mete símbolos chinos. Y eso si que no tengo idea de por qué pasa. Ya me estoy planteando rehacerlo todo con d7 que si funciona.
Otra cosa, antes de salir de casa baje e instale el xe8 bajado de la web de embarcadero, por 30 días, y hace lo mismo, en lugar de guardar el listado guarda lo que le da la gana y con símbolos chinos.
En fin, mañana será otro día.
Un saludo y gracias por tu ayuda y paciencia.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #4  
Antiguo 23-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Buenos dias, al final he desistido de hacerlo en xe7 y lo he pasado todo a delphi 7, pero cuando pulso F9 me tira el error "duplicate resourde" supongo que será algun archivo o no, no lo sé. ¿alguna idea?

http://pasteall.org/pic/index.php?id=108058
saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #5  
Antiguo 23-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, el contenido de la carpeta donde guardo todo el proyecto es este:
http://pasteall.org/pic/index.php?id=108059
Lo digo por si vosotros veis algún archivo que esté duplicado. Por otra parte, mirando en la web di con este post de otro foro.. http://delphiaccess.com/foros/index....hi/#entry84813 donde se dice que lo han solucionado pero yo no sé que archivo tengo duplicado, con esto de pasar de xe7 a delphi7...
Gracias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #6  
Antiguo 23-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, ya lo he solucionado ufff... el problema es que en una de las unidades usadas, en ListViewExt hacía referencia a otra de las muchas pruebas que ya llevo del dichoso programa.
Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #7  
Antiguo 24-10-2016
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Buenos dias,

La aplicacion ya funciona con sus mas y sus menos, pero si una vez cargado el archivo con el contenido de la lista intengo continuar con el proceso me dice:
"Access violation at address 00000000. Read of address 00000000" Pero si agrego un boton de prueba y dentro escribro:

Código Delphi [-]
...
lista.items.add.subitems.add('prueba');
...

Se agrega un nuevo item al final de la lista y no da error. ¿alguna sugerencia?
El codigo que genera numeros es este:

Código Delphi [-]
unit uTAlea;
 {Radikal, Q3 para Trucomania.}

 interface

 uses Windows,SysUtils, Math;

 type
   {Array de booleanos de longitud variable}
   TArrayBool = array[0..0] of boolean;
   PArrayBool = ^TArrayBool;

   {Clase para manejar numeros aleatorios}
   TAlea = class
     Maximo             : integer;            //Valor maximo de los numeros obtenidos
     Lista              : PArrayBool;
     FaltanDeSacar      : integer;
     constructor        Create(Rango:integer);
     destructor         Destroy; override;
     procedure          Reset;                //Resetea la lista de numeros
     function           PillaNumero:integer;  //Devuelve un numero aletorio sin repeticion
   end;



 implementation


 constructor TAlea.Create(Rango:integer);
 begin
 {
   Si los números a extraer no pueden ser repetidos
   hemos de crear un array para almacenar cual ha salido y cual no
   Como el array ha de ser variable, usamos el GetMem y
   los punteros para que sirva tambien para versiones
   anteriores a Delphi 4, que no incorporan los arrays
   de longitud variable...
 }
   inherited Create;
   Maximo:=Rango;
   FaltanDeSacar:=Rango;
   {Reservamos memoria para el array de longitud variable}
   GetMem(Lista, 1+Maximo * SizeOf(Boolean));
   ZeroMemory(Lista,1+Maximo * SizeOf(Boolean));
 end;

 destructor TAlea.Destroy;
 begin
   if Assigned(Lista) then FreeMem(Lista, 1+Maximo * SizeOf(Boolean));
   inherited Destroy;
 end;

 function TAlea.PillaNumero:integer;
 var
   Numero: integer;
 begin
   if FaltanDeSacar=0 then raise exception.create( 'Error. No se pude sacar otro numero sin repetir'+#13+#10+
                                                   'Error. No more numbers are available');

   {Buscamos un número que no haya salido ya}
   repeat
    Numero:=RandomRange(1,49)
   until NOT Lista^[Numero];
   {Lo apuntamos en la lista de numeros ya usados}
   Lista^[Numero]:=TRUE;
   {Decrementamos la cantidad de numeros que faltan por salir}
   Dec(FaltanDeSacar);
   Result:=Numero;
 end;

 procedure TAlea.Reset;
 begin
   ZeroMemory(Lista,1+Maximo * SizeOf(Boolean));
   FaltanDeSacar:=Maximo;
 end;

 end.

Y la llamada a la funcion esta:

Código Delphi [-]
...
case comb.ItemIndex of
    0: begin
         timer1.Enabled:= true;
         barra.MinValue:= 0;
         barra.Maxvalue:= 50000;  //50.000
         {Sacamos 6 numero sin repetir}
         for i:= 0 to 49999 do
          begin
            label4.Caption:= IntToStr((i)+1);
            Ristra:=TAlea.Create(49);
            with lista.Items.Add do
            begin
              subitems.Add(IntToStr(ristra.PillaNumero));
              subitems.Add(IntToStr(ristra.PillaNumero));
              subitems.Add(IntToStr(ristra.PillaNumero));
              subitems.Add(IntToStr(ristra.PillaNumero));
              subitems.Add(IntToStr(ristra.PillaNumero));
              subitems.Add(IntToStr(ristra.PillaNumero));
              Ristra.Free;
            end;
              barra.Progress:= i;
              label20.Caption:= FormatFloat('0.00',((i*100)/50000))+'%';
          end;
      end;
...

¿Por que no pueden agregarse items al final del listado previamente cargado desde fichero?
Gracias y un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problema al Guardar Archivo de ListView en Delphi wolfran_hack Varios 11 23-06-2015 03:27:41
Guardar ListView como Texto Plano danielmj Varios 5 16-11-2014 11:05:53
Error al guardar un Archivo de FastReport en Base de Datos Firebird con Delphi EX3 daniel_gdfr Firebird e Interbase 0 13-10-2014 20:29:08
problemas al guardar listview demonio6 Varios 16 11-11-2012 05:35:52
error al guardar bitmap en archivo Robert01 Lazarus, FreePascal, Kylix, etc. 4 15-03-2008 18:28:56


La franja horaria es GMT +2. Ahora son las 11:23:08.


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