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 |
Cita:
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. |
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) :)
|
La franja horaria es GMT +2. Ahora son las 00:28:40. |
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