Модераторы: MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить закрыт Word или нет 
:(
    Опции темы
Albinos_x
Дата 24.4.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Работаю с компонентами закладки Servis

WordApplication1 и WordDocument1

пытаюсь определить открыт или закрыт Word, так
Код
...
if not VarIsEmpty(WordApplication1.Application) then
...


но эта строка всегда возвращяет - True

Может, кто знает, как правильно определять запущен Word или нет?

Заранее спасибо за помощь! smile


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
z-END
Дата 24.4.2005, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: нет
Всего: 102



попробуй так:
Код

function WordRunning:Boolean;
var 
 temp: Variant;
begin
  try
    temp := GetActiveOleObject('Word.Application');
    Result := true;
  except 
   Result := false;
 end;
end;



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Albinos_x
Дата 24.4.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



в каком модуле лежит GetActiveOleObject();


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
z-END
Дата 24.4.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: нет
Всего: 102



помоему в ComObj если нет то нажми хэлп по данной ф-ции и посмотри в описании из какого она модуля.


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Albinos_x
Дата 24.4.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Аналогичная проблема...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
z-END
Дата 24.4.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: нет
Всего: 102



Цитата(Albinos_x @ 24.4.2005, 14:49)
Аналогичная проблема...

всмысле? опять получается что Ворд запущен?! может он у тя в процессах висит?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Albinos_x
Дата 24.4.2005, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Я был не прав определяет... Но не совсем так как мне нужно...

обнаружил следующие косяки
1. Word открыт. Запускаем программу. Документ в ней не создаём. закрываем программу. Закрывается до этого открытый документ + ещё и сохраняется
2. Word закрыт. Запускаем программу. создаём в ней документ. Закрываем документ (Word). Программа выдаёт ошибку.

код
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
var SaveChanges, templ:olevariant;
    s: string;
begin
// если Word не закрыт
  if WordRunning  then
     begin
     // определяем название и место сохранения документа
     s:=ExtractFilePath(Application.ExeName)+'Temp\отчёт '+ DateToStr(DateTimePicker1.Date);
   // если такой файл уже существует
     while (FileExists(s+'.doc')) do
        begin
    // добавляем к названию 'Copy'
        s:=s+'Copy';
        end;
     Templ:=s+'.doc';
     // если не сохранен, то
     if WordApplication1.ActiveDocument.Saved=false then
          // сохраняем
        WordApplication1.ActiveDocument.SaveAs(Templ, EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam);
     SaveChanges:=false;
     // Закрываем документ
     //WordApplication1.ActiveDocument.Close(SaveChanges,EmptyParam,EmptyParam);
     end;
Application.Terminate;


Это сообщение отредактировал(а) Albinos_x - 24.4.2005, 15:49


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
z-END
Дата 24.4.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: нет
Всего: 102



несовсем понятно что написано..
Цитата(Albinos_x @ 24.4.2005, 16:46)
выдаёт ошибку.

Какую ошибку?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Albinos_x
Дата 24.4.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



ругается, говорит что операция недоступна.
думаю что WordApplication1 не разъединяется с вордом при его закрытии и пытается его закрыть...

Это сообщение отредактировал(а) Albinos_x - 24.4.2005, 17:21


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 24.4.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Кто-нибудь знает как это побороть?




--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
<Spawn>
Дата 25.4.2005, 05:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



Вот еще один способ:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Unknown: IUnknown;
  Result: HResult;
begin
  Result := GetActiveObject(ProgIDToClassID('Word.Application'), nil, Unknown);
  if Result = MK_E_UNAVAILABLE then
    ShowMessage('Закрыт')
  else
    ShowMessage('Открыт')
end;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
RA
Дата 25.4.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Можно и так smile
if FindWindow('MsoStdCompMgr',nil)<>0 then caption:='On' else caption:='Off';

PM   Вверх
Albinos_x
Дата 25.4.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата
GetActiveObject(ProgIDToClassID('Word.Application'), nil, Unknown);


подскажите в каком модуле она лежит, а то делфя не понимает её...

А через WordApplication1 можно как-нибудь определить, потому что предлогаемые варианты определяют не только мою сессию, но и другие.

Цитата
обнаружил следующие косяки
1. Word открыт. Запускаем программу. Документ в ней не создаём. закрываем программу. Закрывается до этого открытый документ + ещё и сохраняется
2. Word закрыт. Запускаем программу. создаём в ней документ. Закрываем документ (Word). Программа выдаёт ошибку.


1. определять мне надо ворд (документ) , который создался программой
2. если пользователь закрыл ворд (документ), который создался программой, то предотвратить попытку его закрытия при уничтожении WordApplication1
Добавлено @ 16:46
прошу прощения, если немного неправильно выразился при постановки вопроса


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
<Spawn>
Дата 25.4.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



Цитата
подскажите в каком модуле она лежит, а то делфя не понимает её


ActiveX

Это сообщение отредактировал(а) <Spawn> - 25.4.2005, 19:05


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Albinos_x
Дата 25.4.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



спасибо,
но это - всё равно не решает мою проблему полностью...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 26.4.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Решил проблему....

Код
...
var
  Form1: TForm1;
  CreaDok: OleVariant;
...
CreaDok:=WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
...
procedure TForm1.SpeedButton1Click(Sender: TObject);
var SaveChanges, templ:olevariant;
    s: string;
begin
WordApplication1.AutoQuit:=false;
try
// определяю закрытие документа
  if not VarIsEmpty(CreaDok) then
     begin
     s:=ExtractFilePath(Application.ExeName)+'Temp\Отчёт '+ DateToStr(DateTimePicker1.Date);
     while (FileExists(s+'.doc')) do
        begin
        s:=s+' Copy';
        end;
     Templ:=s+'.doc';
     // если не сохранён
     if WordApplication1.ActiveDocument.Saved=false then
          // сохраняю
        WordApplication1.ActiveDocument.SaveAs(Templ, EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam,
                                                      EmptyParam, EmptyParam, EmptyParam);
     SaveChanges:=false;
     // закрываю документ
     WordApplication1.ActiveDocument.Close(SaveChanges,EmptyParam,EmptyParam);
     // закрываю ворд
     WordApplication1.Application.Quit(SaveChanges,EmptyParam,EmptyParam);
     end;
finally
 // если произошла ошибка
 // а она произойдёт, если пользователь документ закрыл
   WordApplication1.AutoConnect:=false;
   WordApplication1.Destroy;
 Application.Terminate;
 end;
end;
...


Только в Form1Close(), эта штука не работает. Пришлось BorderIcons отключить полностью


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Fantasist
Дата 5.5.2005, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



А зачем определять, запущен Word или нет?
Вообще реккомендую закладкой servers не пользоваться. Лучше брать только интерфейсы и создавать объекты в run-time - гораздо меньше происходит неожиданных вещей да и из кода очевидно, что происходит.




--------------------
Волны гасят ветер...
PM MAIL   Вверх
Akella
Дата 6.5.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



Значит ты неправильно его закрываешь
нужно так
Код

Var
  Excel:variant;
begin
...

  Excel.Quit;
  Excel := Unassigned;

у меня всё работает
PM MAIL   Вверх
Albinos_x
Дата 7.5.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата
Значит ты неправильно его закрываешь
нужно так


дело в том что в моём случае ошибка возникает ещё до закрытия и вообще при попытке оперирования с этим документом в программе


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Girder
Дата 7.5.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 6
Всего: 155



Albinos_x
1. тебе Fantasist дельный совет дал.
2. Конструкцией try except end - не стоит пренебригать.
3. А если у пользователя 150 документов в Word-е? smile

PS: Не забудь создавать(если у тебя её нет) папку "Temp" - Word - за тебя енто не сделает... smile

Вот код:
Код
uses ComObj;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
const wdFormatDocument = $00000000;
var Word,Doc:IDispatch;
    pn,s:string;
    i:integer;
begin
 try
  Word:=GetActiveOleObject('Word.Application');
 except
  Word:=nil;
 end;
 if Word<>nil then
  begin
   try
    Doc:=Variant(Word).ActiveDocument;
   except
    Doc:=nil;
   end;
  end;
 pn:=ExtractFilePath(ParamStr(0))+'Temp\Отчёт '+DateToStr(Now);
 while Doc<>nil do
  begin
   i:=0;
   while (FileExists(pn+' - '+IntToStr(i)+'.doc')) do inc(i);
   s:=pn+' - '+IntToStr(i)+'.doc';
   try
    if Variant(Doc).Saved=false then
     Variant(Doc).SaveAs(s,wdFormatDocument,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                         EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

   except
   end;
   try
    Variant(Doc).Close(false,EmptyParam,EmptyParam);
    Doc:=Variant(Word).ActiveDocument;
   except
    Doc:=nil;
   end;
  end;
 if Word<>nil then
  begin
   try
    Variant(Word).Application.Quit(false,EmptyParam,EmptyParam);
   except
   end;
  end;
end;


PS2: При запуске кода из под Delphi - могут выдаваться ошибки - но не при обычном запуске проги.

Особо... не отлаживал - так что теоретически... smile могут быть ошибки в коде.

И самое главное... так как ентот код ты хочеш засунуть в OnClose - не забудь выдавать для пользователя какое-нить сообщение... типо "Подождите пожалуйста"... smile

Удачи.

Это сообщение отредактировал(а) Girder - 7.5.2005, 13:25


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Fantasist
Дата 7.5.2005, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Girder у нас же описания интерфейсов есть - зачем нам с Dispatcheм мучаться.

Я бы переписал это так:

Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
    unk:IUnknown;
    Word:_Application;
    Doc:_Document;
    pn,s:string;
    i:integer;
begin
 GetActiveObject(CLASS_WordApplication,0,unk);
 if unk=nil then exit;

 unk.QueryInterface(_Application,Word);
 if Word<>nil then
 begin
   try
     Doc:=Word.ActiveDocument;
     pn:=ExtractFilePath(ParamStr(0))+'Temp\Îò÷¸ò '+DateToStr(Now);
     while Doc<>nil do
     begin
       i:=0;
       while (FileExists(pn+' - '+IntToStr(i)+'.doc')) do inc(i);

       s:=pn+' - '+IntToStr(i)+'.doc';
       try
        if Doc.Saved=false then
          Doc.SaveAs(s,wdFormatDocument,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
        Doc.Close(false,EmptyParam,EmptyParam);
       except
       end;

       Doc:=Word.ActiveDocument;
     end;
   except
   end;

   try
     Word.Quit(false,EmptyParam,EmptyParam);
   except
   end;
 end;
end;


Обработка ошибок, конечно, выглядит не очень, но пойдет. smile
Добавлено @ 19:08
Цитата(Girder @ 7.5.2005, 10:22)
3. А если у пользователя 150 документов в Word-е?


Тогда компутер у него сдохнет еще до запуска этой программы. smile

Это сообщение отредактировал(а) Fantasist - 7.5.2005, 19:08


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Albinos_x
Дата 7.5.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата
2. Конструкцией try except end - не стоит пренебригать.


не пренебрегаю... (см. мой вариант)

Цитата
3. А если у пользователя 150 документов в Word-е?


Проверял на 5 одновременно открытых документах - закрывается тот который нужен. (в моём варианте)

Цитата
PS: Не забудь создавать(если у тебя её нет) папку "Temp" - Word - за тебя енто не сделает...


и такое есть...

Цитата
PS2: При запуске кода из под Delphi - могут выдаваться ошибки - но не при обычном запуске проги.


знаю, но всё равно, спасибо за предупреждение...
----------------------------------------------
Цитата
Тогда компутер у него сдохнет еще до запуска этой программы.

smile smile smile

PS: ваши варианты пока не проверял...

Цитата
Вообще рекомендую закладкой servers не пользоваться. Лучше брать только интерфейсы и создавать объекты в run-time - гораздо меньше происходит неожиданных вещей да и из кода очевидно, что происходит.


Когда это понял, уже было поздно переделывать прогу...На тот момент уже около 5 тыс. строк... Даже с коментариями очень сложно осуществлять навигацию... Сейчас прежде чем, чего-то туда вставить, приходится сначала делать оттельно и уже рабочий вариант кода туда вставлять и даже с таким подходом возникают иногда проблеммы (сегодня неожиданно одна процедура, в которую вставлял новую функцию, стала выдавать переполнение стека...)

Спасибо всем за помощь!!! smile smile smile


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 27.6.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата
PS: ваши варианты пока не проверял...


Предложенные варианты хорошие, но работают не совсем так как я хотел...

моё конечное решение:

Код
...
var
  Form1: TForm1;
  OpenDoc:boolean = false;
...
// при создании  документа
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
 OpenDoc:=true;
...
procedure TForm1.WordDocument1Close(Sender: TObject);
begin
OpenDoc:=false;
WordDocument1.Disconnect;
WordApplication1.Disconnect;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var s :string;
    SaveChanges, templ : olevariant;
begin
if OpenDoc then
   begin
   s:=ExtractFilePath(Application.ExeName)+'Temp\отчёт '+ DateToStr(DateTimePicker1.Date);
   while (FileExists(s+'.doc')) do
        begin
        Application.ProcessMessages;
        s:=s+' Copy';
        end;
       Templ:=s+'.doc';
     // если не сохранен, то
     if WordApplication1.ActiveDocument.Saved=false then
          // сохраняем
          begin
         WordApplication1.ActiveDocument.SaveAs(Templ, EmptyParam, EmptyParam, EmptyParam,
                                                        EmptyParam, EmptyParam, EmptyParam,
                                                        EmptyParam, EmptyParam, EmptyParam,
                                                        EmptyParam, EmptyParam, EmptyParam,
                                                        EmptyParam, EmptyParam, EmptyParam);
          end;
     SaveChanges:=false;
     WordApplication1.ActiveDocument.Close(SaveChanges,EmptyParam,EmptyParam);
   end;
end;
...


работает на ура и никаких ошибок не возникает...

еще раз всем спасибо за участие и дельные советы smile

Это сообщение отредактировал(а) Albinos_x - 19.7.2005, 17:38


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Akella
Дата 30.6.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



При раннем связывании всё работает быстрее и проверка типов и ошибок происходит уже на стадии компилирования
Хотя при позднем связывании тоже есть свои прелести
PM MAIL   Вверх
Albinos_x
Дата 19.7.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Обнаружил, что при некоторых настройках винды, событие FormClose почему-то не обрабатывается... Поэтому приведённый выше код запихнул в событие FormDestroy(Sender: TObject). Тогда проблем не возникнет...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.