XML + C++
21 отговора
1051 прегледа
XML + C++
Здравейте.
Имам нужда от помощ за една програмка на C++. Значи идеята е следната: чете се един XML файл, в него има тагове от сорта на <EgnEnc col="10" />, <Date col="11" format="ddmmyyyy" /> и т.н. Трябва да разчета файла, и за всеки такъв таг да създам инстанция от клас, примерно EgnEnc->EgnEncCheck, Date->DateCheck и т.н. Трябва атрибутите да ги запиша като полета в инстанцията (със съответните им set методи) и да викна метода check. На Питон програмката е 30 реда... Обаче върви недопустимо бавно и трябва да я пренаписвам на C++. Има ли някакъв начин по време на изпълнението да проверявам структурата на програмата, защото не ми се иска да кодирам твърдо горното съответствие таг->клас. В смисъл ако си измисля нов таг само да си добавя едно .dll с класа, а не да прекомпилирам цялата програма наново.
Имам нужда от помощ за една програмка на C++. Значи идеята е следната: чете се един XML файл, в него има тагове от сорта на <EgnEnc col="10" />, <Date col="11" format="ddmmyyyy" /> и т.н. Трябва да разчета файла, и за всеки такъв таг да създам инстанция от клас, примерно EgnEnc->EgnEncCheck, Date->DateCheck и т.н. Трябва атрибутите да ги запиша като полета в инстанцията (със съответните им set методи) и да викна метода check. На Питон програмката е 30 реда... Обаче върви недопустимо бавно и трябва да я пренаписвам на C++. Има ли някакъв начин по време на изпълнението да проверявам структурата на програмата, защото не ми се иска да кодирам твърдо горното съответствие таг->клас. В смисъл ако си измисля нов таг само да си добавя едно .dll с класа, а не да прекомпилирам цялата програма наново.
нещо не те разбрах
кой ще удряш със въпросите и отговорите? поне за отговора съм 100 % сигурен че е велик (просто защото аз съм го написал
)
Re: XML + C++
Да, ако може. Аз измислих един вариант, ама е бая сакат. Правя си .dll тата в една папка с имената на класовете. После търся .dll то дето ми трябва, зареждам го с LoadLibrary и си дърпам check простотията с GetProcAddress. Обаче това не ми решава проблема с атрибутите. Как да проверя дали в .dll то има даден атрибут (разбирай някаква глобална променлива).
Аз ще поровя в Google за ClassFactory ама все пак можеш да вземеш да ми обясниш ако искаш.
Аз ще поровя в Google за ClassFactory ама все пак можеш да вземеш да ми обясниш ако искаш.
Re: XML + C++
хммм,
защо върви недопустимо бавно? Къде се мотка.
- при четенето
- xml парсирането
- при инстанцииране на обектите?
мисля си че една такава програма, би следвало да върви еднакво бързо и на Python и на C++.
Ако все пак си решил C++, бих предложил Java. Там добявянето на нов клас ще е лесно.
защо върви недопустимо бавно? Къде се мотка.
- при четенето
- xml парсирането
- при инстанцииране на обектите?
мисля си че една такава програма, би следвало да върви еднакво бързо и на Python и на C++.
Ако все пак си решил C++, бих предложил Java. Там добявянето на нов клас ще е лесно.
Re: XML + C++
Ако все пак си решил C++, бих предложил Java. Там добявянето на нов клас ще е лесно.
(...пиша ти бавно, щото знам, че четеш трудно.... )
е да - на С++ добавянето на нови класове е изключително трудно.
Сигнатура!
(...пиша ти бавно, щото знам, че четеш трудно.... )
е да - на С++ добавянето на нови класове е изключително трудно.
Сигнатура!
Re: XML + C++
Трябва да проверявам за коректност едни дебели Excel ски таблици, които не знам предварително в какъв формат са (в смисъл не се знае в коя колона какво има). А проверката за ЕГН например, написана на C++ е около 10 пъти по-бърза от същата на Питон. Същото важи и за файловите операции по преобразуване на .xls а в някакъв човешки формат. Освен това ако пусна програмчето на Питон ще трябва да пускам с него и runtime а на въпросния Питон. Абе доста се бави. Цялата работа я свършва за около 2 минути. Бях писал преди време подобно нещо на C++, което се оправяше за 10 ина секунди.
Пък и не виждам защо трябва да пиша нещо на Java щом имам Python. Ще стане 5 пъти по-голяма инсталация, ще зарежда 5 пъти по бавно и ще гълта поне 20 пъти повече памет. Е, вярно... може и да е малко по-бързо ама не си струва просто. Java та е за яки многопроцесорни сървъри.
Пък и не виждам защо трябва да пиша нещо на Java щом имам Python. Ще стане 5 пъти по-голяма инсталация, ще зарежда 5 пъти по бавно и ще гълта поне 20 пъти повече памет. Е, вярно... може и да е малко по-бързо ама не си струва просто. Java та е за яки многопроцесорни сървъри.
Re: XML + C++
>>Java та е за яки многопроцесорни сървъри.
Хмм.. на Сименс С55 ре-екранизацията на Принца оф Персия Уан май беше Жавешка. Не знам колко процесора има Сименса ама за 150 кинта едва ли са 16. Е вярно - не беше забележително бърза играта, ама ставаше. Траеше се. Предполагам че ако бяха писали на С++ щеше да може да играеш Doom 3 на същият тилифон.
А иначе - С++ и XML - лол. Аз си мислех че всички С++ програмисти съхраняват шита в бинарни кодирани, криптирани и компресирани структури от данни с време за претърсване задължително не повече от О(log n).
--
Sometimes the sole purpose of your life is to serve as a warning to others.
Хмм.. на Сименс С55 ре-екранизацията на Принца оф Персия Уан май беше Жавешка. Не знам колко процесора има Сименса ама за 150 кинта едва ли са 16. Е вярно - не беше забележително бърза играта, ама ставаше. Траеше се. Предполагам че ако бяха писали на С++ щеше да може да играеш Doom 3 на същият тилифон.
А иначе - С++ и XML - лол. Аз си мислех че всички С++ програмисти съхраняват шита в бинарни кодирани, криптирани и компресирани структури от данни с време за претърсване задължително не повече от О(log n).
--
Sometimes the sole purpose of your life is to serve as a warning to others.
Re: XML + C++
Колко desktop приложения има на Java? 20, 30, 200 ??? Като пусна нещо по голямко и го чакам по полвин час да си зареди разните му там BigBadWebServer и BigBadUI класове. Ама сървърните приложения са с хиляди. Оня тип Google дето знае всичко и той е писан на Java... Се едно... не ми се спори.
Държиш си нещата в каквото ти е удобно (или в каквото ти кажат) и ги пишеш на каквото ти е удобно (или на каквото ти кажат). Освен това четенето на XML а не ми е ниакакъв проблем. Проблема е интерпретацията на прочетеното. Абе се едно. Забрави.
Държиш си нещата в каквото ти е удобно (или в каквото ти кажат) и ги пишеш на каквото ти е удобно (или на каквото ти кажат). Освен това четенето на XML а не ми е ниакакъв проблем. Проблема е интерпретацията на прочетеното. Абе се едно. Забрави.
Re: XML + C++
Съхраняването на "шита в бинарни кодирани, криптирани и компресирани структури от данни" е типично за една сравнително нова мода в разработката на програмни продукти и операционните системи. Независимо от езика за програмиране. 
Няма да споменавам имена, че току виж пак станал флейма.
Няма да споменавам имена, че току виж пак станал флейма.
Re: XML + C++
С .НЕТ-ско С++ ли си? Има един шит дето се казва XmlSerializer и прави точно това - object instance от Xml и обратно. Ето ти линк:
[линк]
Ако не си с .НЕТ и пишеш на С++ мога само да запаля свещичка и да се моля за тебе. Дано бог ти помогне.
--
Sometimes the sole purpose of your life is to serve as a warning to others.
[линк]
Ако не си с .НЕТ и пишеш на С++ мога само да запаля свещичка и да се моля за тебе. Дано бог ти помогне.
--
Sometimes the sole purpose of your life is to serve as a warning to others.
Re: XML + C++
Гуру нещо не си ме разбрал. Не искам да сериализирам обекти. Искам RTTI. Нещо като отражението в Java и Introspection в Питон. Айде оставете тази глупост... се ще я измисля някак. Ама наистина ми е много интересно има ли някакъв подобен механизъм в C++ или го има само в интерпретаторите?
Re: XML + C++
Няма.
Има разни безумия реализирани с една сюрия макроси. Може да погледнеш CRuntimeClass в MFC. Доколкото знам това му е целта. И все пак -- не трепеш ли мухи с базука?
--
Екстремно програмиране на български.
[линк]
Има разни безумия реализирани с една сюрия макроси. Може да погледнеш CRuntimeClass в MFC. Доколкото знам това му е целта. И все пак -- не трепеш ли мухи с базука?
--
Екстремно програмиране на български.
[линк]
Re: XML + C++
Нали питон е бил направен с цел лесна интеграция с Ц и Ц++?
Такива проверки не можеш ли да си ги напишеш на Ц и да ги викаш от Питона?
Предполагам обаче че най-много време отива в итерацията по Екселските клетки. Там могат да се направат оптимизации - примерно рейнджа дето се итерира да е минималният възможен? Забелязал съм, че това губи най-много време. Възможно е голямата загуба да се получава при трансфера на данни от ексел към питон.
Виж например този линк,
[линк]
там основен съвет е:
Tip #1: minimise traffic between worksheets and VBA.
Представи си щом трафика между VBA с ексел е проблем, представи си какво е като през КОМ прехвърляш към питон.
Не мисля че с С++ ще се реши проблема. Бог да ти е на помощ:))
Между другото:))) като заговорихме за Ява .... доколкото си спомням имаше една библиотека ... а ето го и линка:
[линк]
та това е Ява парсер на ексел файлове. Няма да се изненадам, парсирането и итерацията , инстанциирането и чека на данните да станат по-бързо с "бавната" ява машина, отколкото през КОМ
Такива проверки не можеш ли да си ги напишеш на Ц и да ги викаш от Питона?
Предполагам обаче че най-много време отива в итерацията по Екселските клетки. Там могат да се направат оптимизации - примерно рейнджа дето се итерира да е минималният възможен? Забелязал съм, че това губи най-много време. Възможно е голямата загуба да се получава при трансфера на данни от ексел към питон.
Виж например този линк,
[линк]
там основен съвет е:
Tip #1: minimise traffic between worksheets and VBA.
Представи си щом трафика между VBA с ексел е проблем, представи си какво е като през КОМ прехвърляш към питон.
Не мисля че с С++ ще се реши проблема. Бог да ти е на помощ:))
Между другото:))) като заговорихме за Ява .... доколкото си спомням имаше една библиотека ... а ето го и линка:
[линк]
та това е Ява парсер на ексел файлове. Няма да се изненадам, парсирането и итерацията , инстанциирането и чека на данните да станат по-бързо с "бавната" ява машина, отколкото през КОМ
Re: XML + C++
В отговор на:Нали питон е бил направен с цел лесна интеграция с Ц и Ц++?
За първи път чувам такова нещо. Имаш ли линк към статия?
Иначе и аз съм склонен да заложа на маршалинга през ком като най-големия уморител на производителността. Почти съм сигурен, че на PyPI има CSV парсер библиотека. Само трябва да се експортира екселския документ в CSV и да се използва библиотеката.
--
Екстремно програмиране на български.
[линк]
Re: XML + C++
Не минавам от Ексел на XML. В XML файловете са ми дефинициите на различните формати, които познавам. Идеята да взема екселския файл и да го сравня с всеки познат формат. Резултата от сравнението е в проценти. Този формат, който даде най-голям процент е потенциален match. В смисъл вече знам в коя колона какво има. От там нататък е лесно. Целта е когато се появи нов формат аз само да добавя един XML файл с дефиницията на формата и едно длл с чек а (това в случай че чека се различава отр вече направените, иначе нищо не пращам) и да оставя програмата сама да се оправя.
Re: XML + C++
До сега съм намерил общо взето само 2 програмчета (в смисъл отворен код), които да преобразуват екселски файл в цсв, ако на компа няма инсталиран Ексел - едното е xlhtml (не е ъпдейтвано от 91 година), а другото е на един кореец, на който сайта му е с някакви йероглифи. Иначе през КОМ наистина мамата си джаса...
Re: XML + C++
Мислех, че контролираш екселските документи и можеш да използваш офис сюитата и да експортираш към ЦСВ. Извинявай за неразбирането.
--
Екстремно програмиране на български.
[линк]
--
Екстремно програмиране на български.
[линк]