Имя: Пароль:
1C
1C 7.7
v7: Как заархивировать строку на лету
0 gdn1974
 
12.06.15
00:50
Подскажите! Как заархивировать строку на лету в 1С 77.
Как в этом примере

    
    Если ЗагрузитьВнешнююКомпоненту("1Cpp.dll")=0 Тогда
        Сообщить("Не удалось обнаружить компоненту 1Cpp.dll!");
    КонецЕсли;
    стр1 = "999999999999Клен ты мой опавший, клен заледенелый, 99Что стоишь, нагнувшись, над метелью белой,9121231231231231231231999999999999999999999999999121231231231231231231999999999999999999999999999121231231231231231231999999999999";
    стрН=стр1;
    стрН="";
    BinData = СоздатьОбъект("BinaryData");
    Сообщить("Длина строки1 "+СтрДлина(стр1));
    BinData.pkCompress(стр1);    
    СОобщить(">>"+стр1+"<<");
    Сообщить("Длина строки2 "+СтрДлина(стр1));
    BinData.pkDecompress(стр1);    
    Сообщить("Длина строки  после распаковки "+СтрДлина(стр1));
    Если стр1 <> стрН Тогда
        Сообщить("Строки не равны","!!!");
    Иначе
        Сообщить("Они равны","!!!");
    КонецЕсли;
1 Duke1C
 
12.06.15
08:37
Что значит "на лету"?
2 gdn1974
 
12.06.15
08:48
(1) Есть строка  стр1  и её не сохраняя в файл сделать сжатой. Команды я нашел описал но у меня не работает.
3 hhhh
 
12.06.15
08:59
(2) может там задержку поставить? Подождать? секунды 3.
4 Мимохожий Однако
 
12.06.15
09:04
Сделай файл, сожми, удали первый файл.
5 Маратыч
 
12.06.15
09:08
(2) Вкорячить алгоритм архивации прямо в код.
6 trad
 
12.06.15
09:17
(0)
биндата1.записатьстроку(стр1)
биндата1.компресс(биндата2)
биндата2.прочитатьстроку(стр2)
7 gdn1974
 
12.06.15
09:41
(6) помоги не получается
    Если ЗагрузитьВнешнююКомпоненту("1Cpp.dll")=0 Тогда
        Сообщить("Не удалось обнаружить компоненту 1Cpp.dll!");
    КонецЕсли;
    стр1 = "999999999999Клен ты мой опавший, клен заледенелый, 99Что стоишь, нагнувшись, над метелью белой,9121231231231231231231999999999999999999999999999121231231231231231231999999999999999999999999999121231231231231231231999999999999";
    стрН=стр1;
    стр2="";
    BinData1 = СоздатьОбъект("BinaryData");
    BinData2 = СоздатьОбъект("BinaryData");
    BinData1.записатьстроку(стр1);    
    BinData1.компресс(BinData2);    
    BinData2.прочитатьстроку(стр2);    

BinData.компресс(BinData2);    
{D:\АРХИВСТРОКУ.ERT(19)}: Поле агрегатного объекта не обнаружено (компресс)
8 trad
 
12.06.15
09:47
биндата догадался перевести, а кмпресс нет?
pkcompress

и я дал не готовое решение, а направление для мысли
там возможно перед получит строку нужно будет указатель сдвигать на начало, надо проверять
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший