Имя: Пароль:
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

и я дал не готовое решение, а направление для мысли
там возможно перед получит строку нужно будет указатель сдвигать на начало, надо проверять
AdBlock убивает бесплатный контент. 1Сергей