Ir al contenido


Foto

Problemas archivos DAT con TFileStream


  • Por favor identifícate para responder
3 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 octubre 2017 - 12:27

Amigos, estoy teniendo problemas con la lectura de un archivo DAT creado con TFileStream, tengo lo siguiente:


delphi
  1. TParamsConnection = record
  2. Database: String[200];
  3. Username: String[200];
  4. Password: String[200];
  5. Server: String[255];
  6. Protocol: String[200];
  7. Port: String[200];
  8. Driver: String[200];
  9. end;
  10.  
  11. procedure SaveConnection;
  12. var AConn: TParamsConnection;
  13. AStream: TFileStream;
  14. begin
  15. AConn.Database := edDBPath.Text;
  16. AConn.Username := edUser.Text;
  17. AConn.Password := edClave.Text;
  18. AConn.Server := edServer.Text;
  19. AConn.Protocol := cbProtocolo.Items.Strings[cbProtocolo.ItemIndex];
  20. AConn.Port := edPuerto.Text;
  21. AConn.Driver := edDriver.Text;
  22.  
  23. AStream := TFileStream.Create('DataConfig.dat', fmCreate or fmShareExclusive);
  24. try
  25. if AStream.Write(AConn, SizeOf(AConn)) <> SizeOf(AConn) then
  26. raise Exception.Create('Error al intentar crear el archivo!');
  27. finally
  28. AStream.Free;
  29. end;
  30. end;
  31.  
  32. function GetParamConnections: TParamsConnection;
  33. Var AConn: TParamsConnection;
  34. AStream: TFileStream;
  35. begin
  36.  
  37. Result := AConn;
  38.  
  39. if FileExists(ExtractFilePath(Application.ExeName) + 'DataConfig\DataConfig.dat') then begin
  40. AStream := TFileSTream.Create(ExtractFilePath(Application.ExeName) + 'DataConfig\DataConfig.dat', fmOpenRead or fmShareDenyNone);
  41. try
  42. if AStream.Read(AConn, SizeOf(AConn)) <> SizeOf(AConn) then
  43. raise Exception.Create('Error al leer el archivo!');
  44.  
  45. Result := AConn;
  46. finally
  47. AStream.Free;
  48. end;
  49. end else begin
  50. MessageDLG('No se encuentra el archivo de configuración!',mtWarning,[mbOk],0);
  51. Application.Terminate;
  52. end;
  53. end;
  54.  

Siempre me marca error de no se puede leer el archivo, tal donde está línea marcada de amarillo en el código anterior. No le encuentro ni pies ni cabeza, y he perdido la mañana entera en eso.


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 03 octubre 2017 - 01:21

Hola

 

¿Y ese archivo si se encuentra en el directorio de la aplicación y subdirectorio DataConfig?

 

Saludos :)


  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 octubre 2017 - 01:39

Pues claro que sí, sino, la función FileExists no funciona, ^o|


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 03 octubre 2017 - 01:59

Me respondo, el problema está en la validación de la lectura del archivo:


delphi
  1. if AStream.Read(AConn, SizeOf(AConn)) <> SizeOf(AConn) then
  2. raise Exception.Create('Error al leer el archivo!');

Lo quité, y ya lee correctamente.


  • 1




IP.Board spam blocked by CleanTalk.