Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 14:01   #21
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Неверный ответ. Нужно просто перед копированием включить русскую раскладку
Фигасе О_о. Незнал!
psycho-coder вне форума
Старый 13.07.2009, 19:21   #22
fitc
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 15
По умолчанию

Здрасьте! Возник очередной вопрос:
как проверить открыт ли документ ворд под определенным именем? Просто мне надо сделать "защиту от дураков" - я в своей проге записываю в документ инфу, а если этот документ открыт, то выдается ошибка, что приложение занято другим процессом... Вот-с, как же проверить открыт ли в данный момент мой документ?
Текст проги:
Цитата:
unit word1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ComObj, StdCtrls, ComCtrls;
type

ObjParam = record
Nname : string;
Ccount : double;
end;
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
//function CloseWord:boolean;
private
{ Private declarations }
public
{ Public declarations }
//-- Объявление массива типа ObjParam
ObjRecords: array[0..1] of ObjParam;
end;
function FindAndInsert(W:variant;findText,Re placementText:string):boolean;
var
Form1: TForm1;
WordApp,Doc:Variant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s:string; //-- Строковая переменная, предназначенная для хранения числа с плвающей точкой
i:integer; //-- Переменная-счетчик
begin
//-- Обнулить окно прогресса
ProgressBar1.Position := 0;
//-- Попытка создания документа типа Word
try
WordApp:=CreateOleObject('Word.Appl ication');
//-- Если неудача - вывести сообщение 'Похоже, что Word не установлен' и выйти
except
ShowMessage('Похоже, что Word не установлен');
exit;
end;
//-- Записываем в структуру данные
for i := 0 to 1 do
begin
ObjRecords[i].Nname:='Это тестовое сообщение';
ObjRecords[i].Ccount:=13.56;
end;
//-- Работаем с закрытым документом
WordApp.Visible:=false;
//-- Открываем шаблон документа
Doc:=WordApp.Documents.Open(Extract filepath(application.exename)+'ooo3 .dot');

//-- Операции со сдвигом курсора и записью
WordApp.Selection.MoveRight(3,1, false);
//WordApp.Selection.MoveRight(12,18,f alse);
WordApp.Selection.Move(10,3);
for i := 0 to 1 do
begin
WordApp.Selection.TypeText(ObjRecor ds[i].Nname);
WordApp.Selection.Move(12,1);
s:=FloatToStr(ObjRecords[i].CCount);
WordApp.Selection.TypeText(s);
WordApp.Selection.Move(10,1);
//WordApp.Selection.Move(12,1);
end;
//-- Окно прогресса заполнено на 30%
ProgressBar1.Position:=30;
//-- Переход на запись в колонтитул
WordApp.ActiveWindow.ActivePane.Vie w.SeekView := 10;
FindAndInsert(WordApp,'Устройство', '!!!!!!!!!!');
//-- Запись текста в колонтитул
WordApp.Selection.Move(10,1);
WordApp.Selection.Move(9,6);
WordApp.ActiveWindow.Selection.Text := 'Текст в колонтитул(тест)';
//FindAndInsert(WordApp,'Устройство', '!!!!!!!!!!');
//-- Окно прогресса заполнено на 70%
ProgressBar1.Position:=70;
//-- Сохранение документа
WordApp.ActiveDocument.SaveAs(Extra ctfilepath(application.exename)+'aa .doc');
//-- Проверка - сохранился ли документ
if WordApp.ActiveDocument.Saved then begin
//-- Окно прогресса заполнено на 100%
ProgressBar1.Position := 100;
messagebox(handle,'Документ сохранен! (aa.doc)','Внимание!',0);
end;
if not WordApp.ActiveDocument.Saved then begin
messagebox(handle,'Документ не сохранен!','Внимание!',0);
end;
//-- Закрытие документа
Doc.Close;
//-- Обнулить окно прогресса
ProgressBar1.Position := 0;
end;

function FindAndInsert(W:variant;findText,Re placementText:string):boolean;
const wdReplaceAll=2;
begin
W.Selection.Find.Text:=FindText;
W.Selection.Find.Replacement.Text:= ReplacementText;
FindAndInsert:=W.Selection.Find.Exe cute(Replace:=wdReplaceAll);
end;

end.
fitc вне форума
Старый 13.07.2009, 19:28   #23
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Поглядеть, что возвращает IOResult.
Главное не забыть про {$I-} и {$I+}....
Вавел из ГМТУ вне форума
Старый 13.07.2009, 19:28   #24
fitc
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 15
По умолчанию

или так: как узнать есть ли в сохраняемой папке документ с моим названием и если есть, то переименовать на другой?
fitc вне форума
Старый 13.07.2009, 19:37   #25
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Опятьже через IOResult.
По идее будет возвращён код ошибки по которому и можно будет определить что там с файлом...
Вавел из ГМТУ вне форума
Старый 14.07.2009, 00:53   #26
fitc
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 15
По умолчанию

у меня ничего не выходит с этим IOResult, все равно ему что то не нравится. Неужели нельзя как нибудь определить список открытых документов попроще?
fitc вне форума
Старый 14.07.2009, 01:07   #27
Валерка84
Новичок
Джуниор
 
Регистрация: 14.07.2009
Сообщений: 4
По умолчанию

Должно всё работать. Через IOResult как раз удобнее всего и делать.
Вот тут например можно прочитать подробнее:
http://www.delphibasics.ru/IOResult.php
Валерка84 вне форума
Старый 14.07.2009, 21:06   #28
fitc
Пользователь
 
Регистрация: 10.07.2009
Сообщений: 15
По умолчанию

незнаю как у вас, а у меня даже при отключении проверки ошибки {$IOChecks off} выдается ошибка(
что приложение занято.. Вот кусок проги, где мне надо чтобы если файл aa.doc открыт он выдал сообщение
Цитата:
....
{$IOChecks off} {Отключили контроль за выполнением операции}
WordApp.ActiveDocument.SaveAs(Extra ctfilepath(application.exename)+ 'aa.doc');
error := IOResult;
if error = 0
then ShowMessage('Сохранение прошло успешно')
else ShowMessageFmt('ошибка! нужно закрыть файл <aa.doc> %d',[error]);
// Включение проверки ошибок I/O
{$IOChecks on}
....

Последний раз редактировалось fitc; 14.07.2009 в 21:16.
fitc вне форума
Старый 14.07.2009, 21:20   #29
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Форум - не чат.
В правилах четко написано - "Одна тема - один вопрос".
mihali4 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов pix_l Общие вопросы Delphi 1 29.03.2009 22:26
Несколько вопросов Зубоскалик Общие вопросы Delphi 14 20.11.2008 14:28
несколько вопросов по RichEdit TaTT DoGG Компоненты Delphi 4 27.05.2008 10:57
Несколько Вопросов Дорст Общие вопросы Delphi 3 12.11.2007 09:18