как написать свою dll?

psvpolo

в какой среде можно наиболее быстро создать свою длл для работы с большим числом файлов и была бы возможность юзать методы по COM из 1с?

Serab

В Visual Studio

Serab

С какими языками ты знаком в степени, достаточной, чтобы решить поставленную задачу (ну про файлы там)? На C++ в любом случае не рекомендовал бы писать COM-компонент, надо будет как минимум книгу прочитать, иначе заебесся. Может .NET? Других путей, я кстати, не знаю (т.е. не представляю что там и как).

apl13

На C++ в любом случае не рекомендовал бы писать COM-компонент
Ашотакоэ?
Ну на чистом ++, конечно, не получится, еще idl нужен, как минимум...

Serab

Да ну, заеб это. Ну и блин, idl, вот я ATL юзал как-то, вот он еще помогает.

psvpolo

прогал на плюсах но давно. примерно представляю как обрабатывать текстовые файлы. как сделать dll с юзабельным com в душе не ипу. я прогал на билдере, думаю должен быть какойто готовый мастер - руками прописывать ессно я не смогу. или может в дельфи готовый мастер есть?

Corrector

Нужен простой COM-объект или внешняя компонента 1С (которая поддерживает специальные интерфейсы 1С) ?
В любом случае имхо, проще всего сделать в C++ Builder или Delphi через wizard

psvpolo

да простой ком.
вчера взял стандартный парсер конфы 1с и декомпилировал его IDA pro - в итоге получился читый ассемблер. Не думаю что писалось именно на нем - есть ли какиелибо способы взять чужжую длл или ехе и декомпилировать его именно в с++ или в то на чем писалось?

sap978

омг :crazy: :crazy: :crazy:

apl13

Че там, как написать чтобы dll на 1с?

anton7805

Юзай технологию WSC (Windows Scripting Components). Можно писать на javascript'е и простыми конфигурационными настройками превратить код в зарегистрированный COM-объект.
Я так писал одну обработку для 1С, как раз работающую с файлами. Javascript простой язык по сравнению с С++ и методы работы с файлами ботаются с нуля за час по примерам из интернета

psvpolo

Спасибо! Надо просто гдето надрать подобных кодов и грамотно их скомпилировать. Может у кого есть примеры готовые длл и работы с деревом файлов? разбор файлов как текста?

psvpolo

кстати забыл спросить о главном: а скорость работы со строками в ж-скрипт будет ли вобще выше чем в 1с? замена слов по шаблону из 5тыщ слов в дереве 5тыщ файлов в 1с 8.1 происходит за время порядка 4 дней - это меня дико не устраивает. основное торможение происходит на процедурах работы со строками типа найти(строкаПоиска, ЧтоИщем стрзаменить(строкаПоиска, Что, НаЧто); ну и тому подобными. Понятно что на плюсах это могло бы просто летать, хотя конечно такие процедуры пришлось бы писать самому, а как обстоит дело с ж.скрипт? а то может это такой же тормоз как и 1с?

FRider

:lol: валяюсь.
Спросите нарика, а седом он захуярить не пробовал?

Serab

опиши-ка алгоритм поподробнее. Сколько раз ты эти функции для каждого файла вызываешь?

Serab

сед 'з/что/начто/гс'

psvpolo

Сколько раз ты эти функции для каждого файла вызываешь?
пробовал написать алгоритм по разному:
1 внешняя переборка - фаловая (это более правильно ибо во втором варианте каждый файл читается 5000 раз)
2 внешняя переборка - по таблице замен
итог почти одинаков ибо 95% вычислительной мощи пожирается куском вот такого кода:
ТекСтрокаФайла = ВРЕГ(ТекстФайл.ПолучитьСтроку(СчетчикСтрок;
ПозицияВхождения = Найти(ТекСтрокаФайла,слово);
Если ПозицияВхождения <> 0 Тогда
скобка1 = найти(стрзаменить(прав(ТекСтрокаФайла,стрдлина(ТекСтрокаФайла)-ПозицияВхождения+1" ","""(");
Если скобка1 = стрдлина(слово)+1 Тогда
     ТекстФайл.удалитьстроку(СчетчикСтрок);
ТекстФайл.ВставитьСтроку(СчетчикСтрок, стрзаменить(ТекСтрокаФайла,слово,замена) );
сообщить("заменили: "+ слово+ " на "+ замена);
то есть по сути ничего сложного но просто 1с ОЧЕНЬ медленно работает со строками

tokuchu

то есть по сути ничего сложного но просто 1с ОЧЕНЬ медленно работает со строками
Ну если ты каждую из 5000 строк отдельно ищешь, то у тебя на любом языке в принципе медленно будет. Конечно по разным платформам будет варьироваться, но будет медленно.
Хотя... 5000(файлов)*5000(строк)*100(строк в файле)*40(длина строки) / 10^9 (гигагерц) = 100 секунд. Оценка очень примерная, но порядок примерно такой должен быть, наверное.

salamander

Ну если ты каждую из 5000 строк отдельно ищешь, то у тебя на любом языке в принципе медленно будет.
Алгоритм, чтобы искать все одновременно, называется алгоритмом Ахо-Корасика. Это я так, на всякий случай. :)

val63

Или Рабина-Карпа (у меня вот ахо-корасик сильно много памяти ел, правда у меня было 3 ляма строк)

zya369

да-да..
а потом реализацию на 1с запостить в вики в качестве примера реализации :grin:

Alena_08_11

Имхо проще написать это на чём угодно (c/c++/c#/python) не заворачивая в com, а тупо вызывая из кода 1C как внешний процесс(КомандаСистемы или ЗапуститьПриложение. Правда колбека не будет в 1С по завершении.
Оставить комментарий
Имя или ник:
Комментарий: