Ir al contenido


Foto

Crear archivo en memoria.


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

#1 Kipow

Kipow

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 228 mensajes
  • LocationGuatemala

Escrito 06 marzo 2009 - 05:38

Mi idea es poder crear un archivo de texto pero no fisicamente en disco sino que en memoria, luego subirlo a un ftp y obviamente liberar la memoria. sera esto posible?

Saludos
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 06 marzo 2009 - 05:49

Hola

Encontré esto que pides pero está en C# si te sirve te tocará migrarlo a Delphi :D

Enviar un Stream por FTP

Salud OS
  • 0

#3 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 07 marzo 2009 - 05:34

Ya se que conoces los TMemoryStream y como enviarlos por ftp, así­ que supongo que la duda es como escribir strings dentro del TMemoryStream. Pues aquí­ te dejo dos alternativas de como hacerlo.

Opción 1:


delphi
  1. var
  2.   Str: TStringList;
  3.   Mem: TMemoryStream;
  4. begin
  5.   Str:= TStringList.Create;
  6.   try
  7.     Str.Add('Linea 1');
  8.     Str.Add('Linea 2');
  9.     Str.Add('Linea 3');
  10.     Mem:= TMEmoryStream.Create;
  11.     try
  12.       Str.SaveToStream(Mem);
  13.       // Aqui haz lo que quieras con el TMemoryStream, por ejemplo
  14.       Mem.SaveToFile('f:\1.txt');
  15.     finally
  16.       Mem.Free;
  17.     end;
  18.   finally
  19.     Str.Free;
  20.   end;
  21. end;



Opción 2:


delphi
  1. procedure WriteStringToStream(Stream: TStream; Str: String);
  2. begin
  3.   Str:= Str + #13#10; // Salto de linea
  4.   Stream.WriteBuffer(PChar(Str)^,Length(Str));
  5. end;
  6.  
  7. procedure TForm1.Button1Click(Sender: TObject);
  8. var
  9.   Mem: TMemoryStream;
  10. begin
  11.   Mem:= TMEmoryStream.Create;
  12.   try
  13.     WriteStringToStream(Mem,'Linea 1');
  14.     WriteStringToStream(Mem,'Linea 2');
  15.     WriteStringToStream(Mem,'Linea 3');
  16.     // Aqui haz lo que quieras con el TMemoryStream, por ejemplo
  17.     Mem.SaveToFile('f:\2.txt');
  18.   finally
  19.     Mem.Free;
  20.   end;
  21. end;



Este ultimo método es valido pata todas las versiones de delphi excepto para la ultima (2009) ya que en esta versión un carácter de una cadena puede ocupar mas de un byte.

  • 0

#4 Kipow

Kipow

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 228 mensajes
  • LocationGuatemala

Escrito 07 marzo 2009 - 10:48

Gracias a los 2 por contestar, muchas gracias Seoane creo que la primera me cae de perlas.

Saludos
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 octubre 2009 - 08:51

Hola a todos, perdon por revivir el hilo pero es lo que necesito:

Tengo un sistema que se comnica con la impresora fiscal samsung bixolon, tiene un año trabajando muy bien.  El asunto es que ahora me piden que grabe el numero de la factura en la impresora fiscal al momento de la impresion, ok hasta aqui todo bien ya que eso lo supe hacer.  El comando que me lo permite es:

function UploadStatusCmd(status:Pointer;error:Pointer;cmd:string): boolean; stdcall external 'tfhkaif.dll';

Lo que pasa es que el escribe la información en un archivo, como se podria hacer para que ese archivo no se grabe en el disco sino que permanezca en memoria?? hay forma de hacerlo??
  • 0

#6 cHackAll

cHackAll

    Advanced Member

  • Administrador
  • 599 mensajes

Escrito 27 octubre 2009 - 09:08

...escribe la información en un archivo, como se podria hacer para que ese archivo no se grabe en el disco sino que permanezca en memoria?? hay forma de hacerlo??


Hace unos meses solucione un problema similar haciendo un hook sencillo a la API WriteFile, obviamente dicho hook solo debe aplicarse a al proceso propio.
  • 0

#7 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 octubre 2009 - 09:18

ok, interesante punto de vista, voy a intentarlo  :lipsrsealed:
  • 0

#8 cHackAll

cHackAll

    Advanced Member

  • Administrador
  • 599 mensajes

Escrito 27 octubre 2009 - 09:28

ok, interesante punto de vista, voy a intentarlo  :lipsrsealed:


Qué es lo que buscas? que no se cree el archivo, que no se escriba la informacion... o capturar la informacion?
  • 0

#9 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 octubre 2009 - 09:37


ok, interesante punto de vista, voy a intentarlo  :lipsrsealed:


Qué es lo que buscas? que no se cree el archivo, que no se escriba la informacion... o capturar la informacion?


Recibir la información, pero sin crear el archivo. :D  tengo pendiente probar lo de la hook
  • 0




IP.Board spam blocked by CleanTalk.