Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2015
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Escribir en archivos con Delphi

Hola estoy estudiando sobre como escribir en todo tipo de archivos con Delphi y llegue a este codigo :

Código Delphi [-]
var
  openfile: TextFile;
begin
      AssignFile(openfile, 'login.exe');
      Append(openfile);
      WriteLn(openfile,'[username]usuario-password[username]');
      CloseFile(openfile);
end;

Este codigo escribe al final de cualquier archivo en este caso escribo en un ejecutable los datos (al final) del login del usuario para usar despues en el administrador , lo mejor de este codigo que hice fue que no necesito usar Classes solo los uses por defecto.

¿ Hay mejores alternativas a este codigo sin usar Clasess o este es codigo esta bien como esta ?

Última edición por JuanOrtega fecha: 25-02-2015 a las 18:44:29.
Responder Con Cita
  #2  
Antiguo 25-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Eso es para ficheros de texto:
Código Delphi [-]
 openfile: TextFile;
¿Para qué quieres hacer eso?
Responder Con Cita
  #3  
Antiguo 25-02-2015
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
porque la unica forma en que se me ocurrio hacerlo , estoy haciendo el login de una agenda , en esta parte pregunto los datos de login y los escribo al final del programa login.exe despues en login.exe me leo a si mismo y compruebo los datos para mostrar el administrador de la agenda.
Responder Con Cita
  #4  
Antiguo 25-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero guárdalo mejor, por ejemplo, en un simple fichero .ini
Responder Con Cita
  #5  
Antiguo 25-02-2015
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Pero eso es lo que trato de que todo este en el exe , tambien tengo pensado incrustar sonidos en el exe pero es un proyecto a futuro.
Responder Con Cita
  #6  
Antiguo 25-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepuke Ver Mensaje
Pero eso es lo que trato de que todo este en el exe
¿Por qué y para qué?
¿Los contactos de la agenda también van a estar en el ejecutable? ¿Cómo?
Eso no se hace así.
Responder Con Cita
  #7  
Antiguo 25-02-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Concuerdo con Casimiro, no solo no esta "bueno" tener los datos de un login metidos dentro de un ejecutale, sino que la forma que lo haces es medio feucha tambien

Podrias declarar dos costantes en tu programa o usar resourcestrings:

Código Delphi [-]
unit Unit1;

interface

uses
  ...

// opcion 1, resourcestring
resourcestring
 sUserName = 'pepito';
 sPassword  = '1234';

// opcion 2, constantes
const
 NombreUsuario = 'pepito';
 PasswordUsuario = '1234';

Y luego la usas como cualquier costante/variable que hayas declarado

Código Delphi [-]
  ShowMessage(sUserName);
  ShowMessage(sPassword);
  ShowMessage(NombreUsuario);
  ShowMessage(PasswordUsuario);

De esta forma te queda metido dentro del ejecutable como necesitas y dejas al delphi que se encarge de hacerlo, no vaya a ser que corrompas el exe o algo por andar metiendo como no se debe
Responder Con Cita
  #8  
Antiguo 26-02-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Volviendo a la pregunta original, la forma general de escribir en un fichero sería algo como esto:

Código Delphi [-]
var
  hFile: integer;
  Buffer: PCHAR;
  Size: integer;
begin
   // abro para escribir
   hFile:= FileOpen('File.bin', fmOpenWrite);
   // Coloco el índice de archivo al final
   FileSeek(hFile, 0,2);
   // El Buffer y su tamaño
   Buffer:= PCHAR('Añado al final');
   Size:= lstrlen(Buffer);
   // Escribo el buffer
   FileWrite(hFile, Buffer^, Size);
   // Cierro el fichero
   FileClose(hFile);
end;

Escribir en un ejecutable, un archivo binario, datos en modo texto, no es buena idea, mejor escribirlos en modo binario.
El problema de escribir un login en el ejecutable es que es muy fácil de que lo vean los curiosos. Cuando lo hago, lo guardo en variables cuyo valor encripto previamente y uso una rutina para descifrar en mi programa.

Si lo haces al final del programa, tendrás que tener previsto un modo de localizar cuando empiezan tus datos, generalmente una firma colocada delante. No es sencillo que un ejecutable se modifique y se guarde así mismo. Otra forma es escribir en los recursos del mismo, más fácil de extraer después.


Saludos.
Responder Con Cita
  #9  
Antiguo 26-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 Lepuke.

Te agrego otra opción para realizarlo:
Código Delphi [-]
procedure AddAtEnd(const aFileName: string; const aText: string);
begin
  with TFileStream.Create(aFileName, fmOpenWrite) do
  try
    Seek(0, soFromEnd);
    Write(aText[1], Length(aText));
  finally
    Free;
  end;
end;
Pero coincido plenamente con lo que te han aconsejado los compañeros, no es la mejor opción para lo que buscas hacer.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 26-02-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Otra idea para guardar tu password es el registro de Windows, así quede fuera del alcance de los fisgones de archivos.

Puestos a variar el código, usemos la API de Windows:
Código Delphi [-]
procedure Write(FileName: PCHAR; Buffer: Pointer; Size: integer);
var
  hFile: integer;
begin
  hFile:= CreateFile(FileName, GENERIC_WRITE, 0, nil, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, 0);
  if hFile <> -1 then
  begin
    _llseek(hFile, 0, FILE_END);
    _lwrite(hFile, Buffer, Size);
    _lclose(hFile);
  end;
end;

Saludos.

Última edición por escafandra fecha: 26-02-2015 a las 10:50:41.
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
¿Delphi XML como escribir leer NameSpaces? JXJ Varios 15 07-03-2017 03:19:44
¿ Se puede leer/escribir/reproducir archivos MP3 a/desde un MemoryStream ? rrf Varios 3 22-11-2008 01:11:51
leer y escribir en archivos .txt o cualquier otra extension jafi666 Varios 1 13-03-2008 23:14:19
Cómo escribir apóstrofos en una cadena en Delphi vejerf Varios 7 30-05-2007 17:31:17
Error al intentar escribir en un archivos con BlockWrite o FileWrite Ictiandro Varios 4 18-11-2006 01:34:11


La franja horaria es GMT +2. Ahora son las 06:32:23.


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