Помощь - Поиск - Пользователи - Календарь
Полная версия: Подвисает при добавлении кода
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
cooler
procedure TForm4.Button2Click(Sender: TObject);
var FilePath: string;
begin
Savedialog1.execute;
FilePath:=ExtractFilePath(GetModuleName(HInstance)) + 'Report.doc';
Word.Documents.Open(FilePath);
FindAndReplace('$s1',floattostr(Q));
FindAndReplace('$s2',floattostr(ggg));
FindAndReplace('$s3',res);
end;


Вот процедура замещения части текста в готовом шаблоне *.doc
При добавлении кода виснет
Нужно чтобы Пользователь в SaveDialog написал имя файла и сохранился под этим именем уже измененный файл
Закрыть грамотно тоже надо документ и ворд, у меня получается пока только подвешивать smile.gif

P.S Объект Word и процедура FindAndReplace были использованы отсюда http://www.webdelphi.ru/2010/02/microsoft-word-v-delphi/
IUnknown
Что именно виснет у тебя?

// Создаешь объект Word где-то в программе
W:=CreateOleObject('Word.Application');


function FindAndReplace(WordApp: Variant; Poisk, Zamena : string): Boolean;
begin
WordApp.Selection.Start := 0;
WordApp.Selection.End := 0;

WordApp.Selection.Find.ClearFormatting;

WordApp.Selection.Find.Forward := true;
WordApp.Selection.Find.Wrap := 1; // wdFindContinue
WordApp.Selection.Find.MatchCase := true;

WordApp.Selection.Find.Text := poisk;
WordApp.Selection.Find.Replacement.Text := zamena;

WordApp.Selection.Find.Execute(Replace := 2); // wdReplaceAll

result := true;
end;

procedure TForm1.ButtonFindReplaceClick(Sender: TObject);
var Doc: variant;
begin
try
Doc := W.Documents.Open(FileName:='F:\a.doc');
if SaveDialog2.Execute() then
begin
FindAndReplace(W, 'XXX', ChangeTo.Text);
Doc.saveas(SaveDialog1.FileName);
end;
finally
Doc := Unassigned; // Документ закрываешь сразу
end;
end;

// Закрываешь, когда становится не нужен
W.Quit;
W := Unassigned;

Ничего не виснет, как работало так и работает...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.