El siguiente codigo es para crear un archivo CSV
desde datos en una Base de Datos, en este caso particular MS SQL 2012
El codigo corre bien en D7 y en XE2 pero...
El CSV creado por XE2 tiene juego de caracteres UNICODE
El CSV creado por D7 juego de caracteres ISO-8859-1
Un 3er programa debe leer este CSV y al leer el de UNICODE aparecen caracteres raros entre cada caracter
sin embargo el CSV creado por D7 esta perfecto
Esto se puede comprobar al leerlo a traves de OpenOffice Calc
Ya he cambiado los string de XE2 para que sean compatibles con D7 y hasta la fecha sigue el problema
Parece que no quieren que abandone el D7,
var Stream: TFileStream; i: Integer; OutLine: string; sTemp: string; begin adodProducto.Open; Stream := TFileStream.Create('producto.csv', fmCreate); OutLine := ''; OutLine := 'Referencia;Categoria;Nombre;Fabricante;'; SetLength(OutLine, Length(OutLine) - 1); Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char)); Stream.Write(sLineBreak, Length(sLineBreak)); adodProducto.First; while not (adodProducto.Eof) do begin OutLine := ''; for i := 0 to adodProducto.FieldCount - 1 do begin sTemp := adodProducto.Fields[i].AsString; sTemp := stringreplace(Stemp, '#38;', '<br>', [rfReplaceAll, rfIgnoreCase]); OutLine := OutLine + sTemp + ';'; end; SetLength(OutLine, Length(OutLine) - 1); Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char)); Stream.Write(sLineBreak, Length(sLineBreak)); adodProducto.Next; end; Stream.Free; adodProducto.Close; end;
Saludos