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 29-03-2011
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
FileWrite Delphi XE

Tengo un problema con la instrucción SysUtils.FileWrite en Delphi XE y consiste en que le envío la instrucción para que me escriba una línea en un fichero plano y escribe sólo la mitad pero con caracteres [Null] en medio de cada uno de ellos.

La instrucción sigue el ejemplo exacto del que se muestra en la ayuda:

La Línea que intenta escribir es:

'29/03/2011 09:42:01 PAGINADOR: PAGINADOR/INDEXADOR MODO AUTOMATICO'#$D#$A

Y la línea que escribe es:

2[null]9[null]/[null]0[null]3[null]/[null]2[null]0[null]1[null]1[null] [null]0[null]9[null]:[null]4[null]2[null]:[null]0[null]1[null] [null] P[null]A[null]G[null]I[null]N[null]A[null]D[null]O[null]R[null]:[null] [null]P[null]A

La función es:

Function fFileWriteString(aFileHandle: Integer;
aBuffer : String;
aCount : LongWord): Boolean;
Var bBuffer: PChar;
i : Integer;
Begin
Result := True;
Try
GetMem(bBuffer, aCount); // Allocate the buffer.

For i := Uno to aCount do
bBuffer[i - Uno] := aBuffer[i];

i := SysUtils.FileWrite(aFileHandle, bBuffer^, aCount);

If i < Cero then
Result := False;
Finally
FreeMem(bBuffer, aCount);
End; // Try
end; // Funct
Responder Con Cita
  #2  
Antiguo 29-03-2011
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Cita:
Empezado por blaiselaborde Ver Mensaje
Tengo un problema con la instrucción SysUtils.FileWrite en Delphi XE y consiste en que le envío la instrucción para que me escriba una línea en un fichero plano y escribe sólo la mitad pero con caracteres [Null] en medio de cada uno de ellos.

La instrucción sigue el ejemplo exacto del que se muestra en la ayuda:

La Línea que intenta escribir es:

'29/03/2011 09:42:01 PAGINADOR: PAGINADOR/INDEXADOR MODO AUTOMATICO'#$D#$A

Y la línea que escribe es:

2[null]9[null]/[null]0[null]3[null]/[null]2[null]0[null]1[null]1[null] [null]0[null]9[null]:[null]4[null]2[null]:[null]0[null]1[null] [null] P[null]A[null]G[null]I[null]N[null]A[null]D[null]O[null]R[null]:[null] [null]P[null]A

La función es:

Function fFileWriteString(aFileHandle: Integer;
aBuffer : String;
aCount : LongWord): Boolean;
Var bBuffer: PChar;
i : Integer;
Begin
Result := True;
Try
GetMem(bBuffer, aCount); // Allocate the buffer.

For i := Uno to aCount do
bBuffer[i - Uno] := aBuffer[i];

i := SysUtils.FileWrite(aFileHandle, bBuffer^, aCount);

If i < Cero then
Result := False;
Finally
FreeMem(bBuffer, aCount);
End; // Try
end; // Funct

He podido notar que se muestra la cadena por la mitad pero correctamente, si el tamaño (aCount) es un Número Par (aunque el tamaño del string escrito en realidad es completo, o sea que los nulos los pasa al final), en cambio si el tamaño es un número Impar, se muestra la cadena de igual tamaño, pero con los [Null] incorporados, como en el ejemplo que he mostrado.
Responder Con Cita
  #3  
Antiguo 29-03-2011
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
mmmm..... sin haber probado el codigo diria que es asunto del Unicode. Prueba a cambiar pChar por AnsiPChar y string por AnsiString (jeje no me acuerdo del nombre correcto pero por ahi va)
__________________
ESTO ES UN FORO ... NO UN MÓVIL
¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender?
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
Uso del SysUtils.FileWrite. ¿Cómo? metalfox6383 Varios 6 15-10-2010 17:40:26
Error al intentar escribir en un archivos con BlockWrite o FileWrite Ictiandro Varios 4 18-11-2006 01:34:11
Saber cual es el error cuando FileWrite retorna -1 abracadabra Varios 1 16-11-2006 01:44:18


La franja horaria es GMT +2. Ahora son las 10:56:03.


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