#51
02.10.2012 02:38:41 Добрый день. Очень мешает работе при аварийном завершении сеансов на терминальном сервере. Приходится отслеживать свободные лицензии вручную. |
|
#52
02.10.2012 11:00:32 Добрый день. |
|
#53
05.10.2012 09:58:27 Добрый день. |
|
#54
05.10.2012 13:20:35 После того как вновь произошло зависание сеанса нужно запустить конфигуратор, и подключится к отладке зависшего сеанса, через меню Отладка-> Подключение. После подключения, при помощи команды (Меню Отладка -> Остановить) остановить выполнение обработки и пошагово отследить причину. |
|
#55
05.10.2012 13:57:56 Сработает ли данный метод если ошибка в защищенном модуле? |
|
#56
05.10.2012 16:18:10 Защищенный модуль закрыт в нем отлаживать не получится. Попробуйте в модуле Заказ-наряда в процедурах ПередЗаписью() и ПровестиПоПартиям() заменить код: Если зфЗащищенныеФункцииСервер.ПодсистемаДоступна(«ЗащитаАвтосалон») Тогда на КомплектацияАвтомобиля=Неопределено; Изменится ли ситуация с восстановлением последовательностей? |
|
#57
05.10.2012 17:45:06 |
|
#58
05.10.2012 18:37:39 Зависает сразу, при первом восстановлении Заказ-наряда? |
|
#59
05.10.2012 18:44:25 К сожалению зависает не сразу. Воспроизводится на тестовой базе за определенный период. Если период сокращать, то ошибка уже не воспроизводится. Видимо причина в накопленных вызовах. |
|
#60
05.10.2012 18:54:10 Да, будет. Если база тестовая, не пробовали ли её восстанавливать на файловом варианте? Изменено: Виктор Радько — 05.10.2012 18:56:29 |
|
#61
05.10.2012 21:17:25 в файловом варианте база восстанавливается успешно |
|
#62
09.10.2012 10:06:37 Оказалось что вызов проверки («ЗащитаАвтосалон») в модуле Заказ-наряда вызывается еще и в функции ПолучитьОбязательныеРеквизиты(). Закомментировав вызов по аналогии как описано в сообщении #56 удалось решить проблему? |
|
#63
09.10.2012 10:44:43 При ручном проведении ошибка не возникнет, только при вызове защиты из под сервера без клиентского контекста. На данный момент исправлением служит замена кода: Для сервиса заменяем на строку КомплектацияАвтомобиля=Неопределено; Заменить нужно во всем модуле документа Заказ-наряд, где есть получение предопределенного вида ремонта «Комплектация». На данный момент для решение этой проблемы зарегистрирована задача под номером С0008355. |
|
#64
19.10.2012 13:02:04 Сегодня столкнулся с новой проблемой у всех пользователей разом пошла ошибка: {ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при выполнение метода «Подключить обработку» Помогло перезапуск службы сервера лицензирования. |
|
#65
19.10.2012 13:12:32 Добрый день. |
|
Алексей Жуков Заглянувший Сообщений: 1 |
#66
11.06.2021 10:20:00
Добрый день! Периодически возникает подобная ошибка. Спонтанно. Причины вообще не понятны. |
||||
#67
15.06.2021 08:32:47 Здравствуйте. {ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при выполнение метода «Подключить обработку» Управление автотранспортом Проф, редакция 2.2 (2.2.13.1) |
|
#68
15.06.2021 09:27:44 Добрый день, на сервере лицензирования 2,0,12 обнаружена ошибка, которая приводит к указанному сообщению. Рекомендуем понизить сервер программного лицензирования до версии 2,0,10, скачать его можно по ссылке https://drive.google.com/file/d/1GzFPRHS6-NSVQQNk8eyx0loY2xR4nDIc/view?usp=sharing |
|
Данил Василига Посетитель Сообщений: 647 |
#69
15.06.2021 10:15:50
Добрый день. А когда будет исправлена данная ошибка? Сейчас у нас установлена версия 2.0.10.370, но скоро понадобиться совместное использование с аппаратным ключем СЛК другой конфигурации 1С. |
||
#70
15.06.2021 11:12:35 Данил Василига, по срокам исправления пока подсказать не можем, для сервера лицензирования 2,0,10 нужно использовать соответствующие версии сервера СЛК. |
|
Tatiana Isaeva Заглянувший Сообщений: 11 |
#71
16.06.2021 02:35:18
Версию СЛК тоже необходимо понизить? Подскажите тогда, соответствующую версию СЛК для сервера лицензирования 2.0.10 Изменено: Tatiana Isaeva — 16.06.2021 02:36:11 |
||
#72
16.06.2021 16:12:44 Tatiana Isaeva, проблем может и не возникнуть при использовании актуального СЛК и сервера лицензирования 2,0,10. При возникновении сложностей с запуском конфигурации рекомендуем обращаться на соответствующую Линию техподдержки. |
|
Данил Василига Посетитель Сообщений: 647 |
#73
17.06.2021 14:07:05
На Вашем сайте по ссылке https://rarus.ru/downloads/2553/Instruktsiya_po_zagruzke_servera_litsenzirovaniya_v.2.0.12.397_i_Server_SLK_v.3.0.24.9151.txt предлагается скачать единый файл сервера лицензирования и СЛК. Он чем-то отличается от СЛК с сайта 1С? Как лучше устанавливать СЛК — с единого файла сервера лицензирования и СЛК или отдельным файлом СЛК с сайта 1С (при условии, что на одном и тот же сервере будет использоваться и Альфа-Авто редакции 6, и другая конфигурация, использующая только СЛК)? Изменено: Данил Василига — 17.06.2021 14:09:30 |
||
Валентина Кузнецова Администратор Сообщений: 511 |
#74
17.06.2021 14:51:17 Добрый день, Данил!
В состав полного дистрибутива Сервер лицензирования+СЛК добавляется типовой СЛК, тот же, что публикуется на сайте 1С , но версии самого СЛК на нашем сайте и сайте 1С могут отличаться
В целом, это не принципиально, но учитывая обстоятельства: — мы пока не рекомендуем устанавливать сервер программного лицензирования версии 2.0.12.397; |
||||
Игорь Кузнецов Заглянувший Сообщений: 2 |
#75
07.10.2021 10:45:50 Добрый день. Стала появляться ошибка «ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при инициализации компоненты лицензирования!». Сервер лицензирования 2.0.12.397. Используется аппаратный ключ. Windows Server 2019. Понизить версию сервера до 2.0.10? Изменено: Игорь Кузнецов — 07.10.2021 10:49:55 |
АСУТП-кодер
Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва
Репутация: 15
Всего: 95
Что значит — нереально выложить код? Надо выкладывать хотя бы для начала тот кусок, который вызывает эту ошибку. Как я предполагаю, идет использование функции VarArrayCreate (для работы, к примеру, с Excel.Application) с указанием типа, который мелкомягкий не знает — к примеру VarString, о запрете использования которого прямым тестом сказано в хелпе:
Цитата |
The element type cannot be varString or a custom Variant type. To create a variant array of strings use the varOleStr type code. |
Еще в хелпе сказано:
Цитата |
The Bounds parameter must contain an even number of values, where each pair of values specifies the upper and lower bounds of one dimension of the array |
Может это условие не выполняется?…
Больше, к сожалению, ничего предположить не могу без кода…
———————
самурай без меча подобен самураю с мечом, но только без меча
← →
12 ©
(2011-01-14 12:22)
[0]
Забираю из excel в stringgrid
На одном файле — все нормально, пробую другой — ошибка.
Именно, если я специально набил данные — берет нормально
Стоит открыть «левый файл», а по-идее, какая ему разница?, так ошибка.
ArrayData: Variant;
BeginRow :=1;
BeginCol := 1;
RowCount := ExcelApp.Cells.SpecialCells(11).Row;
ColCount := ExcelApp.Cells.SpecialCells(11).Column;
sgView.RowCount := RowCount ;
sgView.ColCount := ColCount ;
if (RowCount <> 100) and (ColCount <> 9) then
Exit; -- именно такие размеры получаются
ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr); // тут - Error creating variant or safe array
// varVariant); // так раньше пробовал
// ибо тут http://forum.vingrad.ru/forum/topic-141245/0.html сказали про varOleStr
← →
12 ©
(2011-01-14 12:52)
[1]
а так работает
чудеса..
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 150, 150], varOleStr);
← →
KilkennyCat ©
(2011-01-14 13:06)
[2]
> if (RowCount <> 100) and (ColCount <> 9) then
> Exit;
не вяжется с
> RowCount := ExcelApp.Cells.SpecialCells(11).Row;
> ColCount := ExcelApp.Cells.SpecialCells(11).Column;
> sgView.RowCount := RowCount ;
> sgView.ColCount := ColCount
> VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount
> + 1], varOleStr); // тут — Error creating variant or safe
> array
я бы так сделал
if (ExcelApp.Cells.SpecialCells(11).Row<> 100) and (ExcelApp.Cells.SpecialCells(11).Column <> 9) then Exit;
sgView.RowCount := 100;
sgView.ColCount := 9;
ArrayData := VarArrayCreate([1, 1, 101, 10], varOleStr);
если нет никаких планов на RowCount и пр. в дальнейшем.
← →
12 ©
(2011-01-14 13:09)
[3]
не работает
if (RowCount <> 100) and (ColCount <> 9) and (BeginRow <> 1) and (BeginCol <> 1) then
Exit;
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 101, 10], varOleStr);
exit;
работает
if (RowCount <> 100) and (ColCount <> 9) and (BeginRow <> 1) and (BeginCol <> 1) then
Exit;
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 10, 101], varOleStr);
exit;
что за глупость?
ну, ладно, пусть я ошибся (и то,
возможно
, ошибся с порядком аргументов), но какая ему разница, какие там числа стоят?!!
← →
12 ©
(2011-01-14 13:10)
[4]
> KilkennyCat © (14.01.11 13:06) [2]
100 и 9 — это я для вас написал, чтоб было понятно, что выхода не было, и чему они равны, следовательно.
← →
RWolf ©
(2011-01-14 13:13)
[5]
> 12 © (14.01.11 13:09) [3]
> но какая ему разница, какие там числа стоят?!!
в 1-м случае некорректные границы массива получаются.
← →
Сергей М. ©
(2011-01-14 13:16)
[6]
> какая ему разница, какие там числа стоят?
Как это «какая» ?)
Каждая пара значений описывает нижнюю и верхнюю границу индексов описываемой размерности)
С какой радости нижняя граница равна 101, а верхняя при этом у тебя меньше нижней ?)
← →
Сергей М. ©
(2011-01-14 13:18)
[7]
Если уж не хочется заморачиваться что там больше или меньше, поступи тупо но надежно: [Min(BoundIndex1, BoundIndex2), Max(BoundIndex1, BoundIndex2)]
← →
KilkennyCat ©
(2011-01-14 13:20)
[8]
еще нашел, что:
Функция VarArrayCreate создает массив variant с пределами, заданными параметром Bounds и типом элементов, заданным параметром VarType. Параметр Bounds должен содержать четное число значений, каждая пара которых задает пределы изменения индексов соответствующего измерения.
← →
12 ©
(2011-01-14 13:25)
[9]
аа..
а я всегда думал, что просто матрица создается, по размерам..
а уж как ее интерпретировать — дело второе
Спасибо
← →
Сергей М. ©
(2011-01-14 13:39)
[10]
> а я всегда думал
А не надо думать — надо справку читать)
Хотя и там лажа:
each pair of values specifies the upper and lower bounds of one dimension of the array.
Т.е. действуя по справке ты как раз получаешь теми самыми граблями, но оно хотя бы на мысль наведет)
Based on Delphi 10’s source code, the problem comes from SafeArrayCreate
failing, most likely because of an EOutOfMemory exception.
SafeArrayCreate
tries to allocate 160MB of memory, which needs to be contiguous. It’s possible there is not a big enough «hole» in the virtual memory of your process to fit that much memory. In a 32 bits process, that wouldn’t be that unlikely I guess.
One way to mitigate the problem a little would probably be to activate the /LARGEADDRESSAWARE flag. But that would only slightly reduce the likelyhood of the error happening, and could reappear soon in the future.
Other options would include :
-
Compiling to a 64 bits application.
-
Use a proper database instead of an in-memory dataset.
#51
02.10.2012 02:38:41 Добрый день. Очень мешает работе при аварийном завершении сеансов на терминальном сервере. Приходится отслеживать свободные лицензии вручную. |
|
#52
02.10.2012 11:00:32 Добрый день. |
|
#53
05.10.2012 09:58:27 Добрый день. |
|
#54
05.10.2012 13:20:35 После того как вновь произошло зависание сеанса нужно запустить конфигуратор, и подключится к отладке зависшего сеанса, через меню Отладка-> Подключение. После подключения, при помощи команды (Меню Отладка -> Остановить) остановить выполнение обработки и пошагово отследить причину. |
|
#55
05.10.2012 13:57:56 Сработает ли данный метод если ошибка в защищенном модуле? |
|
#56
05.10.2012 16:18:10 Защищенный модуль закрыт в нем отлаживать не получится. Попробуйте в модуле Заказ-наряда в процедурах ПередЗаписью() и ПровестиПоПартиям() заменить код: Если зфЗащищенныеФункцииСервер.ПодсистемаДоступна(«ЗащитаАвтосалон») Тогда на КомплектацияАвтомобиля=Неопределено; Изменится ли ситуация с восстановлением последовательностей? |
|
#57
05.10.2012 17:45:06 |
|
#58
05.10.2012 18:37:39 Зависает сразу, при первом восстановлении Заказ-наряда? |
|
#59
05.10.2012 18:44:25 К сожалению зависает не сразу. Воспроизводится на тестовой базе за определенный период. Если период сокращать, то ошибка уже не воспроизводится. Видимо причина в накопленных вызовах. |
|
#60
05.10.2012 18:54:10 Да, будет. Если база тестовая, не пробовали ли её восстанавливать на файловом варианте? Изменено: Виктор Радько — 05.10.2012 18:56:29 |
|
#61
05.10.2012 21:17:25 в файловом варианте база восстанавливается успешно |
|
#62
09.10.2012 10:06:37 Оказалось что вызов проверки («ЗащитаАвтосалон») в модуле Заказ-наряда вызывается еще и в функции ПолучитьОбязательныеРеквизиты(). Закомментировав вызов по аналогии как описано в сообщении #56 удалось решить проблему? |
|
#63
09.10.2012 10:44:43 При ручном проведении ошибка не возникнет, только при вызове защиты из под сервера без клиентского контекста. На данный момент исправлением служит замена кода: Для сервиса заменяем на строку КомплектацияАвтомобиля=Неопределено; Заменить нужно во всем модуле документа Заказ-наряд, где есть получение предопределенного вида ремонта «Комплектация». На данный момент для решение этой проблемы зарегистрирована задача под номером С0008355. |
|
#64
19.10.2012 13:02:04 Сегодня столкнулся с новой проблемой у всех пользователей разом пошла ошибка: {ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при выполнение метода «Подключить обработку» Помогло перезапуск службы сервера лицензирования. |
|
#65
19.10.2012 13:12:32 Добрый день. |
|
Алексей Жуков Заглянувший Сообщений: 1 |
#66
11.06.2021 10:20:00
Добрый день! Периодически возникает подобная ошибка. Спонтанно. Причины вообще не понятны. |
||||
#67
15.06.2021 08:32:47 Здравствуйте. {ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при выполнение метода «Подключить обработку» Управление автотранспортом Проф, редакция 2.2 (2.2.13.1) |
|
#68
15.06.2021 09:27:44 Добрый день, на сервере лицензирования 2,0,12 обнаружена ошибка, которая приводит к указанному сообщению. Рекомендуем понизить сервер программного лицензирования до версии 2,0,10, скачать его можно по ссылке https://drive.google.com/file/d/1GzFPRHS6-NSVQQNk8eyx0loY2xR4nDIc/view?usp=sharing |
|
Данил Василига Посетитель Сообщений: 636 |
#69
15.06.2021 10:15:50
Добрый день. А когда будет исправлена данная ошибка? Сейчас у нас установлена версия 2.0.10.370, но скоро понадобиться совместное использование с аппаратным ключем СЛК другой конфигурации 1С. |
||
#70
15.06.2021 11:12:35 Данил Василига, по срокам исправления пока подсказать не можем, для сервера лицензирования 2,0,10 нужно использовать соответствующие версии сервера СЛК. |
|
Tatiana Isaeva Заглянувший Сообщений: 11 |
#71
16.06.2021 02:35:18
Версию СЛК тоже необходимо понизить? Подскажите тогда, соответствующую версию СЛК для сервера лицензирования 2.0.10 Изменено: Tatiana Isaeva — 16.06.2021 02:36:11 |
||
#72
16.06.2021 16:12:44 Tatiana Isaeva, проблем может и не возникнуть при использовании актуального СЛК и сервера лицензирования 2,0,10. При возникновении сложностей с запуском конфигурации рекомендуем обращаться на соответствующую Линию техподдержки. |
|
Данил Василига Посетитель Сообщений: 636 |
#73
17.06.2021 14:07:05
На Вашем сайте по ссылке https://rarus.ru/downloads/2553/Instruktsiya_po_zagruzke_servera_litsenzirovaniya_v.2.0.12.397_i_Server_SLK_v.3.0.24.9151.txt предлагается скачать единый файл сервера лицензирования и СЛК. Он чем-то отличается от СЛК с сайта 1С? Как лучше устанавливать СЛК — с единого файла сервера лицензирования и СЛК или отдельным файлом СЛК с сайта 1С (при условии, что на одном и тот же сервере будет использоваться и Альфа-Авто редакции 6, и другая конфигурация, использующая только СЛК)? Изменено: Данил Василига — 17.06.2021 14:09:30 |
||
Валентина Кузнецова Администратор Сообщений: 505 |
#74
17.06.2021 14:51:17 Добрый день, Данил!
В состав полного дистрибутива Сервер лицензирования+СЛК добавляется типовой СЛК, тот же, что публикуется на сайте 1С , но версии самого СЛК на нашем сайте и сайте 1С могут отличаться
В целом, это не принципиально, но учитывая обстоятельства: — мы пока не рекомендуем устанавливать сервер программного лицензирования версии 2.0.12.397; |
||||
Игорь Кузнецов Заглянувший Сообщений: 2 |
#75
07.10.2021 10:45:50 Добрый день. Стала появляться ошибка «ОбщийМодуль.сплмкЛицензированиеСервер.Модуль(106)}: Ошибка при инициализации компоненты лицензирования!». Сервер лицензирования 2.0.12.397. Используется аппаратный ключ. Windows Server 2019. Понизить версию сервера до 2.0.10? Изменено: Игорь Кузнецов — 07.10.2021 10:49:55 |
Содержание
- Экспертная система Delphi.int.ru
- Сообщество программистов Общение, помощь, обмен опытом
- Delphi.int.ru Expert
- Другие разделы портала
- Переход к вопросу:
- Статистика за сегодня:
- Лучшие эксперты
- Вопрос # 4 426
- Мини-форум вопроса
- Error creating variant array перевод
- Error creating variant array перевод
Экспертная система Delphi.int.ru
Сообщество программистов
Общение, помощь, обмен опытом
Delphi.int.ru Expert
Другие разделы портала
Переход к вопросу:
Статистика за сегодня:
Онлайн на сайте: 27 ( 3404)
Онлайн в IRC: 2 ( 17)
Последние новости:
30 апреля 2012
Последний вопрос:
9 августа 2022, 09:39
Последний ответ:
29 марта 2018, 23:32
Лучшие эксперты
Вопрос # 4 426
Здравствуйте, эксперты!
Мой вопрос заключается в следующем
Имеется переменная типа variant из которой делается массив типа varInt64 в связи счем возникает ошибка, причем если вместо типа varInt64 использовать varInteger, то ошибки нет.
Суть вопроса у всех ли так или я один такой если у когото ошибка не возникает если не трудно отпишите какая у вас система 32 или 64 битная?
Ну и конечно буду рад если ктонибудь подскажет как обойти эту ошибку.
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- public
- end;
- var
- Form1: TForm1;
- arr: variant;
- implementation
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- end;
- end.
Вопрос задал: SOA (статус: Посетитель)
Вопрос отправлен: 14 июля 2010, 18:03
Состояние вопроса: открыт, ответов: .
Мини-форум вопроса
Страницы: [« Предыдущая] [ 1] [ 2]
min@y™ (статус: Доктор наук), 15 июля 2010, 11:51 [#21] :
Цитата (SOA):
min@y™ (статус: Доктор наук), 15 июля 2010, 11:52 [#22] :
Цитата (SOA):
SOA (статус: Посетитель), 15 июля 2010, 15:13 [#23] :
В принципе логично, но при считывании из потока придется использовать цикл, а у меня все это реализовано несколько иначе, потому что я боюсь что слишком много циклов могут затормозить если не систему, то приложение.
(Слишком много циклов потому что считывание и воспроизведение идут в разных потоках для каждого канала, в моем случае каналов 2, но их может быть до 16 и как следствие 32 потока).
Ошибка
error creating variant or safe array
Страницы: [« Предыдущая] [ 1] [ 2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
Источник
Шустрый
Профиль
Группа: Участник
Сообщений: 107
Регистрация: 13.1.2006
Репутация: нет
Всего: нет
ama_kid | |||||||||||||||||||||
АСУТП-кодер Профиль Репутация: 15
1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.
[ Время генерации скрипта: 0.0949 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник Error creating variant array переводШустрый Профиль Репутация: нет
|
← →
12 ©
(2011-01-14 12:22)
[0]
Забираю из excel в stringgrid
На одном файле — все нормально, пробую другой — ошибка.
Именно, если я специально набил данные — берет нормально
Стоит открыть «левый файл», а по-идее, какая ему разница?, так ошибка.
ArrayData: Variant;
BeginRow :=1;
BeginCol := 1;
RowCount := ExcelApp.Cells.SpecialCells(11).Row;
ColCount := ExcelApp.Cells.SpecialCells(11).Column;
sgView.RowCount := RowCount ;
sgView.ColCount := ColCount ;
if (RowCount <> 100) and (ColCount <> 9) then
Exit; -- именно такие размеры получаются
ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr); // тут - Error creating variant or safe array
// varVariant); // так раньше пробовал
// ибо тут http://forum.vingrad.ru/forum/topic-141245/0.html сказали про varOleStr
← →
12 ©
(2011-01-14 12:52)
[1]
а так работает
чудеса..
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 150, 150], varOleStr);
← →
KilkennyCat ©
(2011-01-14 13:06)
[2]
> if (RowCount <> 100) and (ColCount <> 9) then
> Exit;
не вяжется с
> RowCount := ExcelApp.Cells.SpecialCells(11).Row;
> ColCount := ExcelApp.Cells.SpecialCells(11).Column;
> sgView.RowCount := RowCount ;
> sgView.ColCount := ColCount
> VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount
> + 1], varOleStr); // тут — Error creating variant or safe
> array
я бы так сделал
if (ExcelApp.Cells.SpecialCells(11).Row<> 100) and (ExcelApp.Cells.SpecialCells(11).Column <> 9) then Exit;
sgView.RowCount := 100;
sgView.ColCount := 9;
ArrayData := VarArrayCreate([1, 1, 101, 10], varOleStr);
если нет никаких планов на RowCount и пр. в дальнейшем.
← →
12 ©
(2011-01-14 13:09)
[3]
не работает
if (RowCount <> 100) and (ColCount <> 9) and (BeginRow <> 1) and (BeginCol <> 1) then
Exit;
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 101, 10], varOleStr);
exit;
работает
if (RowCount <> 100) and (ColCount <> 9) and (BeginRow <> 1) and (BeginCol <> 1) then
Exit;
//ArrayData := VarArrayCreate([BeginRow, BeginCol, RowCount + 1, ColCount + 1], varOleStr);// varVariant);
ArrayData := VarArrayCreate([1, 1, 10, 101], varOleStr);
exit;
что за глупость?
ну, ладно, пусть я ошибся (и то,
возможно
, ошибся с порядком аргументов), но какая ему разница, какие там числа стоят?!!
← →
12 ©
(2011-01-14 13:10)
[4]
> KilkennyCat © (14.01.11 13:06) [2]
100 и 9 — это я для вас написал, чтоб было понятно, что выхода не было, и чему они равны, следовательно.
← →
RWolf ©
(2011-01-14 13:13)
[5]
> 12 © (14.01.11 13:09) [3]
> но какая ему разница, какие там числа стоят?!!
в 1-м случае некорректные границы массива получаются.
← →
Сергей М. ©
(2011-01-14 13:16)
[6]
> какая ему разница, какие там числа стоят?
Как это «какая» ?)
Каждая пара значений описывает нижнюю и верхнюю границу индексов описываемой размерности)
С какой радости нижняя граница равна 101, а верхняя при этом у тебя меньше нижней ?)
← →
Сергей М. ©
(2011-01-14 13:18)
[7]
Если уж не хочется заморачиваться что там больше или меньше, поступи тупо но надежно: [Min(BoundIndex1, BoundIndex2), Max(BoundIndex1, BoundIndex2)]
← →
KilkennyCat ©
(2011-01-14 13:20)
[8]
еще нашел, что:
Функция VarArrayCreate создает массив variant с пределами, заданными параметром Bounds и типом элементов, заданным параметром VarType. Параметр Bounds должен содержать четное число значений, каждая пара которых задает пределы изменения индексов соответствующего измерения.
← →
12 ©
(2011-01-14 13:25)
[9]
аа..
а я всегда думал, что просто матрица создается, по размерам..
а уж как ее интерпретировать — дело второе
Спасибо
← →
Сергей М. ©
(2011-01-14 13:39)
[10]
> а я всегда думал
А не надо думать — надо справку читать)
Хотя и там лажа:
each pair of values specifies the upper and lower bounds of one dimension of the array.
Т.е. действуя по справке ты как раз получаешь теми самыми граблями, но оно хотя бы на мысль наведет)