Fórum Campo Memo e Word #322350
29/05/2006
0
Ola amigos,
Estou tendo problemas com integração Delphi X Word com relação a campos Memo. Quando o texto do memo é muito longo , não consigo fazer o replace no Word. A funçao é a seguinte :
function FrmSelecao.Word_Replace(WordApp: OleVariant; SearchString: String; ReplaceString: WideString = ´´; Flags: TWordReplaceFlags = [wrfReplaceAll]): Boolean;
const
wdDoNotSaveChanges = 0; wdFindContinue = 1; wdReplaceOne = 1; wdReplaceAll = 2;
var
wdSearchString: string;
begin
Result := False;
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text := SearchString;
wdSearchString := copy(SearchString, 2, length(SearchString));
if length(trim(ReplaceString)) < 1 then if IBQry.FindField(wdSearchString) <> nil then ReplaceString := IBQry.FindField(wdSearchString).AsString;
WordApp.Selection.Find.Replacement.Text := ReplaceString;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
WordApp.Selection.Find.MatchWholeWord := False;
WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
if wrfReplaceAll in Flags then WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
else WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
Result := True;
end;
Como veêm , estou tentando usar widestring para contornar o problema , mas não esta dando certo.
Quando o texto é muito longo , da pau no replace.
Será que dá pra usar um stream ?
Estou tendo problemas com integração Delphi X Word com relação a campos Memo. Quando o texto do memo é muito longo , não consigo fazer o replace no Word. A funçao é a seguinte :
function FrmSelecao.Word_Replace(WordApp: OleVariant; SearchString: String; ReplaceString: WideString = ´´; Flags: TWordReplaceFlags = [wrfReplaceAll]): Boolean;
const
wdDoNotSaveChanges = 0; wdFindContinue = 1; wdReplaceOne = 1; wdReplaceAll = 2;
var
wdSearchString: string;
begin
Result := False;
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text := SearchString;
wdSearchString := copy(SearchString, 2, length(SearchString));
if length(trim(ReplaceString)) < 1 then if IBQry.FindField(wdSearchString) <> nil then ReplaceString := IBQry.FindField(wdSearchString).AsString;
WordApp.Selection.Find.Replacement.Text := ReplaceString;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
WordApp.Selection.Find.MatchWholeWord := False;
WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
if wrfReplaceAll in Flags then WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
else WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
Result := True;
end;
Como veêm , estou tentando usar widestring para contornar o problema , mas não esta dando certo.
Quando o texto é muito longo , da pau no replace.
Será que dá pra usar um stream ?
Emerson Azevedo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)