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 ecfisa,

El código que me indicas y que fue por una aplicacion de ya hace tiempo, en su dia me daba error al cargar el archivo, siempre decía lo mismo "... no es un archivo correcto" esto me lo decía usando xe7 en delphi7 iba como la seda. Pues bién, ahora vuelvo a estar con xe7 y sigue diciendo lo mismo a la hora de cargar el archivo " bla bla bla no es un archivo correcto" lal solución que he encontrado a este error es anular la linea que dice:

Código Delphi [-]
{if signat <> form1.opendialog1.FileName+'.dat' then
  begin
    Stream.Free;
    raise Exception.Create(Format('%s no es el archivo correcto',[FileName]));
  end;}
Dentro del procedimiendo de cargar y asignar la extension al opendialog en tiempo de diseño. Pero sigo teniendo el mismo error que antes (el del post anterior), es decir, no guarda el contenido del listview tal como se muestra en pantalla, sino una cantidad igual de lineas con numeros aleatorios pero del 1 al 9. Pondría una captura pero al ser lo mismo de antes vuelvo a poner los enlaces anteriores.

[datos cargados del archivo]
http://pasteall.org/pic/index.php?id=107982

[datos reales]
http://pasteall.org/pic/index.php?id=107983

Realmente no sé por que hace esto. La unica opcion que se me ocurre es volcarlo todo a delphi 7... pero no me seduce mucho esa idea.
Saludos.

Edito: He probado a cambiar la extension de .dat a .txt, pero no sirve.
__________________
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 18:58:58.
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.

Por si te pudiera servir para hacer alguna prueba, te adjunto el código del ejemplo completo.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip ListView.zip (6,0 KB, 3 visitas)
__________________
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
Gracias, sigo mirando por internet y encontre este codigo... lo pongo por un detalle que marco en rojo.
Código Delphi [-]
procedure ListViewSaveToFile(ListView: TListView; const FileName: string);

  procedure AddTextToLine(var Line: string; const Text: string);
  begin
    Line := Line + Text + #9;
  end;

  procedure MoveCompletedLineToList(const Strings: TStringList; var Line: string);
  begin
    Strings.Add(System.Copy(Line, 1, Length(Line)-1));//remove trailing tab
    Line := '';
  end;

var
  Strings: TStringList;
  LatestLine: string;
  i, j: Integer;

begin
  LatestLine := '';

  Strings := TStringList.Create;
  try
    for i := 0 to ListView.Items.Count-1 do begin
      AddTextToLine(LatestLine, ListView.Items[i].Caption);
      for j := 0 to ListView.Items[i].SubItems.Count-1 do begin
        AddTextToLine(LatestLine, ListView.Items[i].SubItems[j]);
      end;
      MoveCompletedLineToList(Strings, LatestLine);
    end;
    Strings.SaveToFile(FileName, TEncoding.UTF8);
  finally
    Strings.Free;
  end;
end;
¿Puede ser que el contenido del lisview no se guarde correctamente por la codificacion?
Voy a probar tu archivo en un progrmaa a parte en xe7 a ver que hace.
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
  #4  
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
  #5  
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
  #6  
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
  #7  
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
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:05.


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