Forum > Spanish
Conversion de caracteres al crear documento de word
esdonis:
Estoy tratando de crear un documento de Word, pero este no visualiza de forma carecta si pongo caracteres acentuados o si le paso algún valor desde un campo de texto al documento.
Como podría solventar este error de conversión de tipos?
el código que utilizo es el siguiente:
procedure Tflconv.cmdlistClick(Sender: TObject);
var
libro: OLEVariant;
begin
try
libro := CreateOleObject('Word.Application');
except
on e:exception do begin
Application.MessageBox('Error al crear el documento. Primeramente debe instalar el Office.', pchar(Self.Caption), MB_ICONINFORMATION);
exit;
end;
end;
libro.WordBasic.FileNew;
libro.Selection.TypeText('ACTA DE CONCILIACIÓN DE PAGO');
libro.Selection.TypeParagraph;
libro.Selection.MoveUp(5, 1);
libro.ActiveWindow.ActivePane.LargeScroll(-1);
libro.Selection.EndKey(5, 1);
libro.Selection.ParagraphFormat.Alignment := 1;
libro.Selection.Font.Bold := 9999998;
libro.Selection.Font.Italic := 9999998;
libro.Selection.Font.Size := 16;
libro.Selection.MoveDown(5, 3);
libro.Selection.TypeParagraph;
libro.Selection.TypeText(Text:='DE UNA PARTE: ' + txtnombre.Text + ' con domicilio legal en ' + txtdir.Text + '. Registrada con el código No ' + txtent.Text);
libro.Selection.TypeParagraph;
libro.Visible:=true;
end;
lucamar:
Prueba usando:
libro.Selection.TypeText(UTF8Decode('cadena'));
Posiblemente Word (¿qué versión?) esté esperando una WideString o una AnsiString(CP_ACP) pero Lazarus le envíe una cadena en UTF-8.
esdonis:
Me produce una excepcion del tipo SIGSEGV la función UTF8Decode
esdonis:
Si esperaba un WideString
Pero aun no me funciona en el caso de la O acentuada. Lo demás SI funciona
libro.Selection.TypeText(WideString('ACTA DE CONCILIACIÓN DE PAGO'));
La O acentuada no la convierte corectamente
lucamar:
Sólo por probar, declara una variable WS: WideString y haz:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---[... more code ...] WS := UTF8Decode('ACTA DE CONCILIACIÓN ...'); libro.Selection.TypeText(WS);
¿Puedes compartir la unidad donde está declarado el interface con Word? Estoy asumiendo muchas cosas que igual no son ciertas ... :)
Navigation
[0] Message Index
[#] Next page