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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компиляция проекта на разных компьютерах 
V
    Опции темы
AleksandraN
Дата 14.12.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток!
Проблема такая: компилирую один проект на разных машинах, компилируется нормально... но при компиляции на одной машине ( 1 из 10) не работают некоторые сервисы.
 
Например, выгрузка данных из БД в Excel. Вылетает при присвоении значения ячейки в ексель.

Заранее спасибо за помощь.
PM MAIL   Вверх
aleksh
Дата 14.12.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а зачем компилировать на разных?
как к excel-ю подключаешься?
PM MAIL   Вверх
Akella
Дата 14.12.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Ошибка в 17-ой строке.
PM MAIL   Вверх
Poseidon
Дата 14.12.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Дело явно в экселе. Не удивлюсь, если на проблемной машине он вообще не установлен.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Данкинг
Дата 14.12.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(AleksandraN @  14.12.2010,  15:38 Найти цитируемый пост)
но при компиляции на одной машине ( 1 из 10) не работают некоторые сервисы.

Я так понимаю, речь всё же о работе программы, а не о компиляции.
Цитата(AleksandraN @  14.12.2010,  15:38 Найти цитируемый пост)
Например, выгрузка данных из БД в Excel. Вылетает при присвоении значения ячейки в ексель.

Excel - вообще штука такая коварная. Например, вот этот код на одних компах работает, а на других вылетает с какой-то ошибкой, связанной с OLE (не помню точно, какой):
Код

ex:=createoleobject('excel.application');
ex.visible:=false;
ex.DisplayAlerts:=False;
ex.Workbooks.open(changefileext(opener.FileName,'.xls'));
ex.Selection.EntireRow.Insert;
ex.activeworkbook.activesheet.columns['AI:AI'].select;
ex.selection.delete;

ex.activeworkbook.activesheet.range['T1','AG1'].select;
ex.selection.merge;
ex.activeworkbook.activesheet.cells.item[1,20]:='Адрес регистрации:';
ex.activeworkbook.activesheet.cells.item[1,20].font.size:= 14;

<.....................................................и тому подобное заполнение ячеек............................................>

ex.activeworkbook.activesheet.Rows[1].Font.Bold := True;

ex.activeworkbook.activesheet.cells.item[2,2]:='Фамилия';
ex.activeworkbook.activesheet.cells.item[2,3]:='Имя';
ex.activeworkbook.activesheet.cells.item[2,4]:='Отчество';
<.....................................................и тому подобное заполнение ячеек............................................>
ex.cells.select;
ex.Selection.Columns.AutoFit;
ex.Selection.Borders.lineStyle := 1;
ex.Selection.HorizontalAlignment:=-4108;

Ex.ActiveWorkbook.Saveas(changefileext(opener.FileName,'.xls'));
ex.application.quit;
ex:=unassigned;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kami
Дата 14.12.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(Данкинг @  14.12.2010,  18:37 Найти цитируемый пост)
 этот код на одних компах работает, а на других вылетает

Он вылетит не только на других, но и на "одних" компьютерах, если юзверь во время работы этого кода будет что-то делать в экселе. (виноваты в этом Select и Selection - не стоит их, по возможности, использовать)
PM MAIL WWW   Вверх
Akella
Дата 14.12.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



может у вас разные версии экселя? кстати, установленные обновления тоже могут влиять
PM MAIL   Вверх
Данкинг
Дата 14.12.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(kami @  14.12.2010,  20:24 Найти цитируемый пост)
Он вылетит не только на других, но и на "одних" компьютерах, если юзверь во время работы этого кода будет что-то делать в экселе. 

Нет, это понятно, что если создан объект Excel, то сам Excel запускать крайне нежелательно при этом. Но в том-то и дело, что никаких лишних Excel'ей не запущено.
Цитата(kami @  14.12.2010,  20:24 Найти цитируемый пост)
(виноваты в этом Select и Selection - не стоит их, по возможности, использовать) 

Значит, я правильно на них грешил. Но как без них в данном случае? Допустим, .AutoFit можно сделать, пройдясь циклом по ячейкам (при этом скорость работы увеличится во много-много раз). Но, к примеру, ту же строчку удалить?

Добавлено через 1 минуту и 17 секунд
Цитата(Akella @  14.12.2010,  20:25 Найти цитируемый пост)
может у вас разные версии экселя?

Глючит в разных версиях - 2000 и 2003. Дома у меня отлично работает на 2003, на работе на некоторых компах не работает на 2000. А обновлений у нас никаких не ставится.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
cat512
Дата 14.12.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AleksandraN @ 14.12.2010,  15:38)
Доброго времени суток!
Проблема такая: компилирую один проект на разных машинах, компилируется нормально... но при компиляции на одной машине ( 1 из 10) не работают некоторые сервисы.
 
Например, выгрузка данных из БД в Excel. Вылетает при присвоении значения ячейки в ексель.

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

Какие версии дельфы стоят на разных машинах? Обрати внимание на то, что при работе с Exel-ем интенсивно используется тип данных variant. Например некоторый код, использующий преобразование variant, будет корректно работать, при сборке на машинах с D6 update pack 2, и некорректно при сборке на машинах с D6 без update pack-ов, потому как в Update pack2, разработчики rtl/vcl внесли ряд существенных изменений, в модуль Variants, библиотеки поддержки ВВ(RTL). Возможно проблема как то связанна с подобными вес.
PM MAIL   Вверх
AleksandraN
Дата 15.12.2010, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



cat512, спасибо огромное... проблема действительно была в типе Variant!
PM MAIL   Вверх
kami
Дата 15.12.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(Данкинг @  14.12.2010,  20:52 Найти цитируемый пост)
Нет, это понятно, что если создан объект Excel, то сам Excel запускать крайне нежелательно при этом.

С Excel как раз-таки проблем нет, а вот с Word я пока это не решил.
Преобразуя твой же код:
Код

var
  ex, wb, sheet, range: Variant;
begin
  ex := createoleobject('excel.application');
  try
    ex.visible := false;
    ex.DisplayAlerts := False;
    wb := ex.Workbooks.open(changefileext(ParamStr(0), '.xls'));
    try
      sheet := wb.Sheets[1];// или Sheet := wb.Sheets['лист такой-то'];
      try
        ex.Selection.EntireRow.Insert; // лень лезть в excel.vb, смотреть где объявлено EntireRow, но от Selection здесь нужно избавиться
        sheet.columns['AI:AI'].Delete;

        range := sheet.range['T1:AG1'];
        range.merge;
        sheet.cells[1, 20] := 'Адрес регистрации:';
        sheet.cells[1, 20].font.size := 14;

        sheet.Rows[1].Font.Bold := True;

        sheet.cells[2, 2] := 'Фамилия';
        sheet.cells[2, 3] := 'Имя';
        sheet.cells[2, 4] := 'Отчество';

        range := sheet.cells;
        range.Columns.AutoFit;
        range.Borders.lineStyle := 1;
        range.HorizontalAlignment := -4108;

        wb.SaveAs(changefileext(ParamStr(0), '.xls'));
      finally
        Sheet := Unassigned;
      end;
    finally
      wb := Unassigned;
    end;
  finally
    ex.application.quit;
    ex := unassigned;
  end;

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


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



kami, интересный вариант, т.е. с конкретным листом работать надо, получается. В общем, в свой ФАК занёс, при случае попробую. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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