Форум: "Основная";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
ВнизРабота проги в 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]Закоментируй код с вордом и запустись если не пашет значит трабла в другом
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.014 c