Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Работа проги в 98 и в ХР   Найти похожие ветки 

 
balagur ©   (2006-06-08 07:51) [0]

Доброго времени суток!
Есть прога, которая работала и под 98 и под ХР. Возникла необходимость сделать апгрейд (добавил кнопку с выводом в Ворд результатов выборки). Теперь под 98 она работать не хочет, т.е. ошибок нет, она просто висит в процессах и ни ответа, ни привета. Причем, старый вариант работает нормально, но после того, как запускаешь новую версию нужен ребут, чтобы старый вариант заработал снова.
Подскажите, где подкрутить-посмотреть.
Спасиба.


 
StriderMan ©   (2006-06-08 08:28) [1]

а че показывает отладчик?


 
balagur ©   (2006-06-08 08:47) [2]

дело в том, что на машине пользователя нету Delphi, т.е. я им отношу экзешник уже скомпиленный.


 
ЮЮ ©   (2006-06-08 09:20) [3]


> (добавил кнопку с выводом в Ворд результатов выборки).


А когда дельфи устанавливаешь, не задумывался компоненты какого Offica ставить?

>дело в том, что на машине пользователя нету Delphi, т.е. я им отношу экзешник уже скомпиленный.

Тогда снеси у себя Office XP и поставь Office 97/


 
StriderMan ©   (2006-06-08 09:29) [4]

Проверка на разных версиях ОС обязательный пункт тестирования софта, для этого я лично использую виртуальные машины WMware


 
DevilDevil ©   (2006-06-08 10:10) [5]

Используй не компоненты, а OLE Automation:

var
 MsWord : variant;
begin
 MsWord := CreateOleObject("Word.Application");

...
MsWord.Quit;
MsWord := UnAssigned;
end;


 
tesseract ©   (2006-06-08 10:12) [6]


> дело в том, что на машине пользователя нету Delphi, т.е.
>  я им отношу экзешник уже скомпиленный.


Сделай редим лога тогда что-ли. хоть будешь знать на какой стадии компонент повесился.


 
balagur ©   (2006-06-08 10:51) [7]

Реально снес ХР и поставив 97 Office такая же трабла возникла...
По поводу теста под разными ОС - дельное замечание, учту, заодно про WMware узнаю, что такое и с чем едят.
Сейчас буду делать с Ole. Думаю,что все получится (сообщу обязательно)
Спасибо большое :)


 
ЮЮ ©   (2006-06-08 11:00) [8]


> Думаю,что все получится (сообщу обязательно)


У меня вчера почти такой же код как в  [5]  "висел" под ХР, летая на 2К, где собственно и компилил. Так что ещё ничего не гарантировано.


 
balagur ©   (2006-06-08 11:07) [9]

Не судьба...
try
   MSWord:=CreateOleObject("Word.Application");
   MSWord.Visible:=True;
 except
   Exception.Create("Microsoft Word");
 end;
 MSWord.Documents.Add;
 MSWord.Selection.Font.Size:=12;
 MSWord.Selection.Font.Name:="Arial";
 MSWord.ActiveDocument.PageSetup.Orientation:=wdOrientLandscape;
.......
 MSWord.Selection.TypeText(tx);
 MsWord.Quit;

отладчик пишет:
process not accessible


 
StriderMan ©   (2006-06-08 11:13) [10]


> except
>    Exception.Create("Microsoft Word");
>  end;

raise Exception.Create("Microsoft Word");


 
ЮЮ ©   (2006-06-08 11:20) [11]

А точно там может возникнуть Exeption?
Мне попался такой для проверки успешного старта :

if  VarIsEmpty(MSWord) then
   ShowMessage("Could not start MS Word");


 
StriderMan ©   (2006-06-08 11:25) [12]


> А точно там может возникнуть Exeption?

Вообще Exception там возникнет либо если не найден объект "Word.Application", либо если он не поддерживает св-во Visible.
а вообще проверить > VarIsEmpty(MSWord) тоже неплохо бы. Но лучше MSWord = UnAssigned


 
balagur ©   (2006-06-08 11:28) [13]


> Вообще Exception там возникнет либо если не найден объект
> "Word.Application", либо если он не поддерживает св-во Visible.
>
> а вообще проверить > VarIsEmpty(MSWord) тоже неплохо бы.
>  Но лучше MSWord = UnAssigned


т.е.
MsWord.Quit;
MsWord := UnAssigned; ?

поставил, но результат тот же


 
ЮЮ ©   (2006-06-08 11:29) [14]


> Но лучше MSWord = UnAssigned
>


У меня дома стоит такая интерсная кофигкрация жереза, Ос и Делфи, что на твоем лучше я схлопотал бы ошибку преобразования :)


 
StriderMan ©   (2006-06-08 11:35) [15]

не

> MsWord := UnAssigned

а
if MSWord = UnAssigned then ...


 
ЮЮ ©   (2006-06-08 11:41) [16]

Некошерно сравнивать с UnAssigned, равно как и с NULL.
VarIsEmpty и VarIsNull существуют не для красивого словца.


 
StriderMan ©   (2006-06-08 11:45) [17]


> Некошерно сравнивать с UnAssigned, равно как и с NULL.
> VarIsEmpty и VarIsNull существуют не для красивого словца

Согласен, поторопился.


 
balagur ©   (2006-06-08 11:57) [18]

прописал это    
if VarisEmpty(MsWord) then
  ShowMessage("Could not start MS Word_");
и в try и в except и в конце, но ничего...

залез в Install Packages и нашел, что у меня указана только Microsoft Office XP Sample Automation Server...
может еще и в этом дело?


 
balagur ©   (2006-06-08 12:16) [19]

еще есть какие-нить варианты? а то как-то завально получается :)


 
DevilDevil ©   (2006-06-08 12:17) [20]

Может у клиента MS Office не стоит?


 
balagur ©   (2006-06-08 12:22) [21]

в смысле? Есть все и Ворд и Эксель и все остальное...


 
StriderMan ©   (2006-06-08 12:25) [22]

попробуй тип OleVariant вместо Variant


 
balagur ©   (2006-06-08 12:27) [23]

после пяти неудачных попыток поразить мишень, грузинский биатлонист зарезал ее ножом :)
про меня :) нефтыкается OleVariant...


 
saxon   (2006-06-08 12:29) [24]

Попробуй через набор ShowMessage"ев опредлелить где подвисает.


 
balagur ©   (2006-06-08 12:31) [25]

имеешь ввиду понафтыкать message"й почти после каждой строки?


 
StriderMan ©   (2006-06-08 12:32) [26]


> нефтыкается OleVariant

в смысле? та же самая канитель?


 
saxon   (2006-06-08 12:33) [27]

Да, надо же локализовать проблемный код.
Боюсь что писать в лог-файл не пройдет.


 
balagur ©   (2006-06-08 12:34) [28]

> нефтыкается OleVariant

> в смысле? та же самая канитель?

абсолютно тоже самое, буду втыкивать мессаджи...


 
saxon   (2006-06-08 12:35) [29]

Кстати, а в системных сообщениях ничего нет?
Может там ворд чего написал.


 
StriderMan ©   (2006-06-08 12:41) [30]

а в процессах WINWORD висит?


 
balagur ©   (2006-06-08 12:41) [31]

Ворд даже не запускается, а при уже запущенном ничего не происходит
а стопит его на третьей строке, т.е. он на нее приходит и началось...

begin
 Application.Initialize;
 Application.CreateForm(TFW1, FW1);
 Application.CreateForm(TFSpisok, FSpisok);
 Application.CreateForm(TFEdSp, FEdSp);
 Application.CreateForm(TFpb, Fpb);
 Application.CreateForm(TFImpExp, FImpExp);
 Application.CreateForm(TFVipl, FVipl);
 Application.CreateForm(TFCdisk, FCdisk);
 Application.CreateForm(TFormGor, FormGor);
 Application.Run;
end.


 
StriderMan ©   (2006-06-08 12:46) [32]

а где ОЛЕ объект создается? в FormCreate? туда надо мессаджи фтыкать


 
saxon   (2006-06-08 12:48) [33]


> StriderMan ©   (08.06.06 12:46) [32]

+
и вооще это какой вариант с ОЛЕ или как?


 
balagur ©   (2006-06-08 12:48) [34]

нет, он создается по нажатии на кнопку


 
StriderMan ©   (2006-06-08 12:51) [35]


> нет, он создается по нажатии на кнопку

ээээ. получается что написал код создания объекта ВОРД в обработчике кнопки, а не поднимается сама форма? ерунда какая-то


 
Slym ©   (2006-06-08 12:53) [36]

ЁЁЁ... Скокаа форм сразу создаешь... неправильно это
Создай главною формочку, остальные по необходимости создавай/убивай.

Оно тебе надо постоянно держать в памяти ImpExp? думаю нет.

и отчеты быстрее/надежнее/лучше делать на report помпонентах FastReport/FreeRep/& other, а уж в них по необходимости экспорт куда нуна


 
Slym ©   (2006-06-08 12:55) [37]

Ниче понять не могу... Ты ворд подгружаешь при запуске приложения чтоли? если так то полный маразм


 
balagur ©   (2006-06-08 12:55) [38]

про то и речь, что создается Ворд на кнопке, а ничего не запускается вообще...
специально поставил Showmessage на FormCreate - так он туда даже не дошел


 
saxon   (2006-06-08 12:57) [39]

На форме компонент ворда не лежит?


 
Slym ©   (2006-06-08 12:57) [40]

Закоментируй код с вордом и запустись если не пашет значит трабла в другом


 
balagur ©   (2006-06-08 12:58) [41]

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


 
StriderMan ©   (2006-06-08 13:00) [42]


> ЁЁЁ... Скокаа форм сразу создаешь... неправильно это
> Создай главною формочку, остальные по необходимости создавай/убивай.
>

Согласен но оффтопик

> и отчеты быстрее/надежнее/лучше делать на report помпонентах
> FastReport/FreeRep/& other


FastReport - платный.
FreeReport - кривой как ручка от патифона, не разруливает заведомо некорректные шаблоны, валит AccesViolation"ы, Stack Overflow и прочее если шаблон некорректный


 
balagur ©   (2006-06-08 13:01) [43]

Лежит WordApplication правда, когда на компонент в Server мышой наводишь пишет WorApplication (WordXP)...


 
StriderMan ©   (2006-06-08 13:04) [44]


> Лежит WordApplication правда, когда на компонент в Server
> мышой наводишь пишет WorApplication (WordXP)...

убивание его помогает?

а зачем? запиши в приват формы fMSWord: Variant и работай им


 
Slym ©   (2006-06-08 13:06) [45]

StriderMan ©   (08.06.06 13:04) [44]
запиши в приват формы fMSWord: Variant и работай им

в var обработчика "кнопки" еще лучше


 
balagur ©   (2006-06-08 13:18) [46]

после
 Application.CreateForm(TFW1, FW1);
он идет в

procedure TRxSpeedButton.Notification(AComponent: TComponent;
 Operation: TOperation);
begin
 inherited Notification(AComponent, Operation);
 if (AComponent = DropDownMenu) and (Operation = opRemove) then
   DropDownMenu := nil;
end;

где благополучно виснет, проходит несколько раз и стает колом


 
balagur ©   (2006-06-08 13:25) [47]

и еще после запуска проги в процессах возникает WINWORD.EXE, который грузит проц на 95-98%, после убития процесса Ворда появляется сообщение что raised exception class EIntCastError with message "Interface not supported"


 
StriderMan ©   (2006-06-08 13:28) [48]

убивание компонента MSWord с формы помогло?


 
balagur ©   (2006-06-08 13:36) [49]

ПАМАГЛО!!!!!!!!!!!!!!!!!!!!!
Удалил компоненту, откомпилил и получилось!!!!!!!!!!!!!!!!!!!!
Я так понимаю, оно должно и под ХР нормально работать?

ВСЕМ ОГРОМНОЕ СПАСИБА!!!!! ПРОСТО ОГРОМНОЕ



Страницы: 1 2 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.05 c
2-1151117256
learner
2006-06-24 06:47
2006.07.23
Сообщение в нить, созданной CreateThread


15-1150775345
Некто
2006-06-20 07:49
2006.07.23
Была ветка про истории


15-1150988089
Gamer
2006-06-22 18:54
2006.07.23
Документ Word и Delphi


4-1144776129
RagimAtom
2006-04-11 21:22
2006.07.23
CryptoAPI


6-1142500622
Ifrit
2006-03-16 12:17
2006.07.23
Посылка сообщения (типа net send от другого имени..