Forum > Spanish

Conversion de caracteres al crear documento de word

(1/2) > >>

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

Go to full version