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 31-08-2006
Avatar de dayrontbs
dayrontbs dayrontbs is offline
Miembro
 
Registrado: jun 2006
Ubicación: Cuba
Posts: 22
Poder: 0
dayrontbs Va por buen camino
Exclamation Guardar un txt con formato UNIX

Hola amigos, pues esto me urge la verdad, como puedo guardar una informacion que tengo en un MEMO en formato UNIX.
__________________
Division Pagos Electronicos GCC
Responder Con Cita
  #2  
Antiguo 31-08-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por dayrontbs
Hola amigos, pues esto me urge la verdad, como puedo guardar una informacion que tengo en un MEMO en formato UNIX.
Puedes quitarle los return -> chr(13) -> hex0D y dejarle sólo los avances de líneas -> chr(10) -> hex0A

Creo que hay una función ya para hacerlo automáticamente, aunque tampoco es muy complicado recorrer el texto e ir eliminando el #13
Responder Con Cita
  #3  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hoy tengo ganas de programar :

Código Delphi [-]
function SaveToUnixFile(Filename, Text: String): Boolean;
var
  F: File;
  Escritos: Integer;
begin
  Result:= FALSE;
  AssignFile(F,Filename);
  {$I-}
    Rewrite(F,1);
  {$I+}
  if IOResult = 0 then
  begin
    Text:= StringReplace(Text,#13,EmptyStr,[rfReplaceAll]);
    BlockWrite(F,PChar(Text)^,Length(Text),Escritos);
    Result:= Escritos = Length(Text);
    CloseFile(F);
  end;
end;


// Por ejemplo
SaveToUnixFile('C:\1.txt',Memo1.Text);
Responder Con Cita
  #4  
Antiguo 31-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otra opción:

Código Delphi [-]
procedure SaveToUnix(FileName, Text: String);
var
  Stream: TFileStream;
  Buffer: String;

begin
  Buffer := AdjustLineBreaks(Text, tlbsLF);

  Stream := TFileStream.Create(FileName, fmCreate);
  try
    Stream.WriteBuffer(Buffer[1], Length(Buffer));
  finally
    Stream.Free;
  end;
end;

// Saludos
Responder Con Cita
  #5  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Otra mas:

Código Delphi [-]
function SaveToUnixFile(Filename, Text: String): Boolean;
var
  F: File;
  Escritos: Integer;
  P1, P2: PChar;
  i: Integer;
begin
  P1:= PChar(Text);
  P2:= P1;
  i:= 0;
  while Boolean(P2^) do
  begin
    if P2^ <> #13 then
    begin
      P1^:= P2^;
      inc(P1);
      inc(i);
    end;
    inc(P2);
  end;
  Result:= FALSE;
  AssignFile(F,Filename);
  {$I-}
    Rewrite(F,1);
  {$I+}
  if IOResult = 0 then
  begin
    BlockWrite(F,PChar(Text)^,i,Escritos);
    Result:= Escritos = i;
    CloseFile(F);
  end;
end;
Responder Con Cita
  #6  
Antiguo 31-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Otra opción más:

Código Delphi [-]
{ Not yet implement }

¡Cómo está el personal, oiga!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 31-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tengo la impresión de que la próxima de seoane va a lucir así:

Código Delphi [-]
function SaveToUnixFile(Filename, Text: String): Boolean;
asm

...

end;



// Saludos
Responder Con Cita
  #8  
Antiguo 31-08-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Al parecer este hilo va tomando esta forma:

The Evolution of Programmer

Saludos
Responder Con Cita
  #9  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por roman
Tengo la impresión de que la próxima de seoane va a lucir así:

Código Delphi [-]
function SaveToUnixFile(Filename, Text: String): Boolean;
asm

...

end;



// Saludos
Lo pensé, pero creo que voy a dejarlo así

Última edición por seoane fecha: 31-08-2006 a las 13:22:56.
Responder Con Cita
  #10  
Antiguo 31-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por fin he podido parar de reir con el enlace de Héctor

No te detengas hombre. La verdad es que este tipo de rutinas pueden ser muy útiles y si se requieren para procesar muchos archivos y grandes, hacerlo en ensamblador puede ser una muy buena idea.

Por cierto, en un programa que uso, tiene la opción de guardar además en formato Mac. En PC tenemos #13#10, en Unix tenemos #10, ¿cómo es en Mac? ¿El #13 solito? ¿#10#13?

// Saludos
Responder Con Cita
  #11  
Antiguo 31-08-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman
Por fin he podido parar de reir con el enlace de Héctor

No te detengas hombre. La verdad es que este tipo de rutinas pueden ser muy útiles y si se requieren para procesar muchos archivos y grandes, hacerlo en ensamblador puede ser una muy buena idea.

Por cierto, en un programa que uso, tiene la opción de guardar además en formato Mac. En PC tenemos #13#10, en Unix tenemos #10, ¿cómo es en Mac? ¿El #13 solito? ¿#10#13?

// Saludos
Imagino que como los Mac OS provienen del BSD, que es un unix, deben ser igual que linux.

¿alguien tiene uno?
Responder Con Cita
  #12  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Casimiro Notevi
Imagino que como los Mac OS provienen del BSD, que es un unix, deben ser igual que linux.

¿alguien tiene uno?
Pues según el google (yo de este tema no tengo idea) los Mac utilizan el #13 en lugar del #10, pero algunos programas, sobre todo los de consola, utilizan el #10 en vez del #13, precisamente por provenir de donde provienen Así que yo por lo menos me quedo como estaba.
Responder Con Cita
  #13  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por roman
No te detengas hombre. La verdad es que este tipo de rutinas pueden ser muy útiles y si se requieren para procesar muchos archivos y grandes, hacerlo en ensamblador puede ser una muy buena idea.
Código Delphi [-]
function Quitar13(Source: PChar; Dest: PChar): Integer;
asm
        MOV     Result,0
        DEC     EAX
@@SIG:
        INC     EAX
        CMP     BYTE PTR [EAX],0
        JE      @@SALIR
        MOV     CL,[EAX]
        CMP     CL,13
        JE      @@SIG
        MOV     BYTE PTR [EDX],CL
        INC     EDX
        INC     Result
        JMP     @@sig
@@SALIR:
        MOV     BYTE PTR [EDX],0
end;

function SaveToUnixFile(Filename, Text: String): Boolean;
var
  F: File;
  Escritos: Integer;
  P: PChar;
  i: integer;
begin
  Result:= FALSE;
  P:= PChar(Text);
  i:= Quitar13(P,P);
  AssignFile(F,Filename);
  {$I-}
    Rewrite(F,1);
  {$I+}
  if IOResult = 0 then
  begin
    BlockWrite(F,P^,i,Escritos);
    Result:= Escritos = i;
    CloseFile(F);
  end;
end;
Responder Con Cita
  #14  
Antiguo 31-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Estupendo!

Una pregunta, supongo que EAX y EDX "apuntan" a Source y Dest. Ésto, ¿cómo lo sabes? Si hubiera más parámetros, ¿cuáles registros se usarían?

// Saludos
Responder Con Cita
  #15  
Antiguo 31-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por roman
Una pregunta, supongo que EAX y EDX "apuntan" a Source y Dest. Ésto, ¿cómo lo sabes? Si hubiera más parámetros, ¿cuáles registros se usarían?
Cita:
Empezado por Ayuda de Delphi
Under the register convention, up to three parameters are passed in CPU registers, and the rest (if any) are passed on the stack. The parameters are passed in order of declaration (as with the pascal convention), and the first three parameters that qualify are passed in the EAX, EDX, and ECX registers, in that order. Real, method-pointer, variant, Int64, and structured types) do not qualify as register parameters, but all other parameters do. If more than three parameters qualify as register parameters, the first three are passed in EAX, EDX, and ECX, and the remaining parameters are pushed onto the stack in order of declaration.
Resumiendo, si se usa la directiva register (es la que se utiliza por defecto) a la hora de declarar la funcion, los 3 primeros parametros se pasan en los registros EAX, EDX y ECX, en ese mismo orden, y el resto en la pila.
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
Conexión con UNIX SCO ikerzubi Varios 1 01-07-2004 18:25:15
Guardar un Qreport en formato imagen ozsWizzard Impresión 3 18-05-2004 17:58:23
Guardar texto con formato en Access Franklim Tablas planas 3 14-04-2004 15:24:18
Guardar Qreports en formato pdf oliviagadel Impresión 1 16-12-2003 10:38:42
se puede guardar el formato de un documento word y volver a ponerlo cuando se quiera walace_soy Impresión 1 08-05-2003 10:57:54


La franja horaria es GMT +2. Ahora son las 11:59:05.


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