Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Вниз

INI и XML   Найти похожие ветки 

 
френк   (2006-01-07 14:29) [0]

вопрос мастерам: чем обычно пользуетесь? что предпочитаете? почему? какие XML-парсеры посоветуете?


 
DrPass ©   (2006-01-07 14:56) [1]

Для чего? Для хранения настроек?
INI-файлы, конечно. Почему не реестр или XML?
Не реестр, потому что INI-файлы не захламляют систему, упрощают перенос приложений и "ручную" настройку.
Не XML, потому что... а какие его преимущества в данном случае? Никаких. Кроме крутизны и модности, конечно. Но решать такую примитивную задачу как хранение настроек с помощью парсинга XML - это уже высокотехнологический маразм, ИМХО


 
френк   (2006-01-07 15:02) [2]

ну насколько я понимаю XML поддерживает и бинарные данные и много еще чего, что будет полезно в ряде проектов. сам до этого использовал разные способы (и INI и реестр, все зависило непосредственно от проекта), но сейчас смотрю, что действительно - "модным" является использование XML, да и возможности в принципе не плохие, четко прослеживается иерархическая структура данных и прочие фенечки...

з.ы. надеюсь ветку не кинут в "потрепаться" ибо умрет (


 
Anatoly Podgoretsky ©   (2006-01-07 15:14) [3]

А тебе что надо?


 
Гаврила ©   (2006-01-07 15:50) [4]

Собственно, реестр тоже иерархию поддерживает и бинарные данные писать умеет. Да и вроде как систему не захламляет, смотря что считать хламом - все в одном месте или все, раскиданное по разным?


 
DrPass ©   (2006-01-07 15:58) [5]


> Да и вроде как систему не захламляет, смотря что считать
> хламом - все в одном месте или все, раскиданное по разным?
>

Я исходил лишь из той позиции, что чем больше база данных реестра, тем больше времени тратит ОС на чтение информации из нее. INI-файл никакого вреда в себе не несет, а разбухание реестра в конце-концов ведет к неминуемой переустановке ОС. Если можно хуть чуть-чуть это отложить, почему бы и нет?


 
Gero ©   (2006-01-07 17:37) [6]

Я предпочитаю AVI.


 
VirEx ©   (2006-01-07 22:04) [7]


[1] DrPass ©   (07.01.06 14:56)
> Не XML, потому что... а какие его преимущества в данном
> случае? Никаких. Кроме крутизны и модности, конечно. Но
> решать такую примитивную задачу как хранение настроек с
> помощью парсинга XML - это уже высокотехнологический маразм,
> ИМХО


насчет модности и крутизны ты это переборщил. XML разрабатывался для облегчения обработки различной информации, в большей степени для бизнес решений. и сейчас он наиболее востребователен (что ты видимо подразумеваешь под словом "модный") т.к. позволяет быстро описать различную информацию и упрявлять ею.

"хранение настроек с помощью парсинга XML - это уже высокотехнологический маразм" - если ты не сталкивался с этим языком (хотя это скорее всего правила описания информации я бы сказал), то лучше поюзай его прежде чем критиковать. думаешь его "вывели в свет" чтобы все занимались "маразмом" парся "непонятые строчки"? есть же поддержка в windows и других ОС в виде исполняемых библиотек - парсеров. дык в чем же тут "маразм"? есть стандарт, есть поддержка, дык юзай системные библы (или сторонних разработчиков), тебе их хватит за глаза, ну или конечно можешь "позаниматься маразмом" делая свой парсер.

насчет юзать XML или нет, я думаю, что если стандарт начинает пользоваться успехом, и у него есть будущее - то лучше его поддерживать. INI конечно более специализированее для хранения настроек и проще (кому как, конечно), но ведь будет проще если юзать системное API как для INI так и для XML, - затраты да и времени на кодинг уйдет меньше, и код программы будет компактней.


 
Fay ©   (2006-01-07 23:03) [8]

2 DrPass ©   (07.01.06 14:56) [1]
> хранение настроек с помощью парсинга XML - это уже высокотехнологический маразм
"Хранение" "с помощью парсинга" - вот маразм. INI и XML тут не при делах.

Не хотите использовать готовые общепринятые технологии? Это просто подарок для тех, кто уже, возможно, метит на Ваше место.


 
Virgo_Style ©   (2006-01-07 23:39) [9]

Fay ©   (07.01.06 23:03) [8]

Это да, бывают заказчики и начальники, которые сами не разбираются в том, о чем идет речь, но требуют, чтобы было модно...


 
DrPass ©   (2006-01-08 00:12) [10]


> VirEx ©   (07.01.06 22:04) [7]


> Fay ©   (07.01.06 23:03) [8]

Ну уж нет, ребятки. Технологии должны использоваться там, где они эффективны. А не просто потому, что они "общепринятые" или "наиболее востребовательны" :-)
Организация обмена информацией через Web, сервис - пожалуйста. Локальное хранилище данных - с удовольствием. Но городить монстра (а механизм взаимодействия программы с парсером, да и работы парсера XML в сравнении с чтением инишника - это действительно монстр) ради хранения десятка-другого строчек - уж извините. У нас в организации такой разработчик точно быстро расстанется со своим местом :)
Кстати, INI-файл ничуть не менее "готовый и общепринятый"


 
VirEx ©   (2006-01-08 00:27) [11]


[10] DrPass ©   (08.01.06 00:12)

> Но городить монстра ради хранения десятка-другого
> строчек - уж извините

...
uses comobj;
...
var
XML :Variant;
...
 XML := CreateOleObject("Microsoft.XMLDOM");
 XML.async:=false;
 XML.load(FileName_or_URL);
 str:=XML.documentElement.SelectSingleNode("//main/tmp");
 XML.documentElement.appendChild("main2").text:="text";
 XML.save(FileName);


 
VirEx ©   (2006-01-08 00:29) [12]

кхе кхе... :)
str:=XML.documentElement.SelectSingleNode("//main/tmp").text;


 
Fay ©   (2006-01-08 00:32) [13]

2 Virgo_Style ©   (07.01.06 23:39) [9]
Ни разу в жизни не видел таких заказчиков.

2 DrPass ©   (08.01.06 0:12) [10]
> Организация обмена информацией через Web, сервис - пожалуйста
Ага, попробуйте обойтись 8)
> Локальное хранилище данных - с удовольствием
Настройки (в общем случае) вполне вписываются в это определение

> механизм взаимодействия программы с парсером, да и работы парсера XML в
> сравнении с чтением инишника - это действительно монстр
Иногда полезно почитать исходники VCL. Бодрит и отрезвляет (вовсяком случае, монтры не мерещатся).

> Кстати, INI-файл ничуть не менее "готовый и общепринятый"
Во-первых, именно "менее". Не смотря на возраст.

З.Ы.
На самом деле, я не собираюсь никого переубеждать. Я в этом абсолютно не заинтересован.


 
DrPass ©   (2006-01-08 03:42) [14]


>  XML := CreateOleObject("Microsoft.XMLDOM");
>  XML.async:=false;
>  XML.load(FileName_or_URL);
>  str:=XML.documentElement.SelectSingleNode("//main/tmp");
>
>  XML.documentElement.appendChild("main2").text:="text";
>  XML.save(FileName);

Хех... т.е. для записи одной-единственной строчки в файл мы создаем СОМ-объект, через IDispatch дергаем его методы, логика которых тоже простотой не отличается... и это считается нормальным?
Простая программа - не та, в которой написана пара макрокоманд, вызывающих несколько многомегабайтных модулей кода. Простая программа - та, где несколько простых операций решают поставленную задачу.
Стыдно, граждане. Во что программирование вырождается?


 
Джо ©   (2006-01-08 03:51) [15]

> [14] DrPass ©   (08.01.06 03:42)

Даже и не знаю, что можно добавить к постам [10] и [14]. Личная благодарность.


 
Германн ©   (2006-01-08 04:48) [16]

Я бы лично добавил, что сабж сформулирован, имхо, неверно.

>  INI и XML [D7]
>
> френк   (07.01.06 14:29)  
>
> вопрос мастерам: чем обычно пользуетесь?

Тут бы надо было бы спросить: для чего и когда вы используете INI, и для чего и когда вы используете XML?
А потом, подумав, спросить что-то типа: А вот я хочу хранить некую информацию в файле. Каким механизмом мне лучше воспользоваться?
Тогда можно было бы расчитывать на получение конкретного ответа после уточнения типа и формата сей информации.


 
Fay ©   (2006-01-08 04:53) [17]

2 DrPass ©   (08.01.06 3:42) [14]
> Простая программа - не та, ...
Запишите строку в реестр. Сравните код.

> через IDispatch дергаем его методы
Коран не запрещает использовать CreateComObject


 
Гаврила ©   (2006-01-08 08:38) [18]

в общем, реестр против ini (а теперь еще и XML тут же) - это тоже маленькая, но вполне состоявшаяся холивар.
Я лично считаю так- с технической точки зрения не имеет значения, что использовать (давайте не будем считать копейки, в случае работы с настройками речь идет именно о них, даже в случае XML, согласитесь, что парсер отрабатывает ОЧЕНЬ БЫСТРО).

а с идеологической точки зрения я лично стараюсь придерживаться рекомендаций microsoft, так как это их ось :-).
Скажут хранить в XML- будем в XML


 
френк   (2006-01-08 08:54) [19]

Германн ©   (08.01.06 04:48) [16]
По поводу формулировки subj с вами полностью согласен. Просто в спешке не стал расписывать ситуацию и в итоге получилось довольно забавно =)

Поэтому давайте немного расширим вопрос, за счет:
Для чего и когда вы используете INI, и для чего и когда вы используете XML?

Но то что услышал, заставило презадуматься ) Ей богу, всем, без исключения, огромное спасибо. Тут ситуация довольно забавная...

Прежде всего я полностью согласен с DrPass (особенно 10 и 14), но в тоже время, от части понимаю "безвыходность" перед инновациями MS. Вот уже 6 лет как я использую INI / REG в своих целях. Выбор зависит непосредственно от "мобильности" ПО, а также от ряда других факторов. Но тут встает по сути

Virgo_Style ©   (07.01.06 23:39) [9]
"но требуют чтобы было модно"

не совсем в том контексте, конечно ) босс у меня сообразительный малый. многие вещи осознает получше меня.

Относительно парсинга XML и навороченного движка для осуществления оного я не совсем согласен. Использование современных менеджеров памяти (FastMM, к примеру), хэш-таблиц и прочих фенечек и рюшечек в деле навигации / парсинга XML играют большую роль. Ведь подумать - если мы имеем большой INI ведь по сути навигация по нему тоже не есть быстрое и простое дело?

Относительно
Германн ©   (08.01.06 04:48) [16]
А потом, подумав, спросить что-то типа: А вот я хочу хранить некую информацию в файле. Каким механизмом мне лучше воспользоваться?

Под информацией... Тут имеется в виду что требуется некое универсально средство для хранение настроек программы, для хранение ряда конфигураций иных используемых данных (к примеру настройки определенного слоя использующихся данных в ПО + эскиз к нему (возможно).  Какой то каламбур сморозил ) Короче, нужно более менее универсальное средство для хранения различной структурированной информации.

При отсутсвии у многих MSXML"a сейчас ориентирован на использование ECXMLParser"a (смотрел многие, шарился по torry, больше всего понравилась "идеология" именно у этого).


 
Sergey Masloff   (2006-01-08 09:00) [20]

>При отсутсвии у многих MSXML"a
Да ну? А это вообще возможно? Если IE есть то и парсер присутствует.


 
френк   (2006-01-08 09:05) [21]

Sergey Masloff   (08.01.06 09:00) [20]
во-первых, я загнул со "многими" )
во-вторых, если не изменяет память, то Win98 без апдейтов и прочего MSXML4 в себе не несла, и множество приложений, которым неободима была работа с XML, как помнится, устанавливали его отдельно.


 
Fay ©   (2006-01-08 09:41) [22]

2 френк   (08.01.06 9:05) [21]
http://mv.rb.ru/simplexml.htm


 
френк   (2006-01-08 09:50) [23]

thnx ) обязательно гляну.


 
Gero ©   (2006-01-08 18:14) [24]

> DrPass ©   (08.01.06 03:42)

> Хех... т.е. для записи одной-единственной строчки в файл
> мы создаем СОМ-объект, через IDispatch дергаем его методы,
> логика которых тоже простотой не отличается... и это считается
> нормальным?
> Простая программа - не та, в которой написана пара макрокоманд,
> вызывающих несколько многомегабайтных модулей кода. Простая
> программа - та, где несколько простых операций решают поставленную
> задачу.

Уверен, должны быть обертки. А если их и нет, можно самому написать. При надобности, конечно.


 
VirEx ©   (2006-01-08 20:32) [25]


[14] DrPass ©   (08.01.06 03:42)
> Хех... т.е. для записи одной-единственной строчки в файл
> мы создаем СОМ-объект, через IDispatch дергаем его методы,
> логика которых тоже простотой не отличается... и это считается
> нормальным?

да где ты тут сложности то увидел?
ну разве сложней чем INI?:


function WriteString(FileName:string; const Section, Ident, Value: string):boolean;
begin
 result:= WritePrivateProfileString(PChar(Section), PChar(Ident),PChar(Value), PChar(FileName));
end;

function ReadString(FileName:string; const Section, Ident, Default: string): string;
var
 Buffer: array[0..2047] of Char;
begin
 SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
   PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FileName)));
end;

зы. ну можешь не юзать через COM, работай через uses msxml;
либо включай в дистрибутив своей программы парсер-библиотеку сторонних разработчиков и юзай, флаг те в руки


> Простая программа - не та, в которой написана пара макрокоманд,
> вызывающих несколько многомегабайтных модулей кода. Простая
> программа - та, где несколько простых операций решают поставленную
> задачу.

получается что пару килобайтная программа написанная исключительно на API - монстр по твоим словам? ведь она вызывает системные "несколько многомегабайтных модулей кода":

program Small;

uses
 windows,
 messages;

var
Instance: HWnd;
WindowClass: TWndClass;
Handle: HWnd;
msg: TMsg;

function WindowProc (Hwn,msg,wpr,lpr: longint): longint; stdcall;
begin
result:=defwindowproc(hwn,msg,wpr,lpr);
case msg of
wm_create:;
wm_destroy:PostQuitMessage(0);
end;
end;

procedure Main;
begin
instance :=GetModuleHandle(nil);

WindowClass.style:=CS_HRedraw or CS_VRedraw;
WindowClass.Lpfnwndproc:=@windowproc;
WindowClass.Hinstance:=Instance;
WindowClass.HbrBackground:= color_btnface;
WindowClass.LpszClassName:="DX";
WindowClass.Hcursor:=LoadCursor(0,IDC_ARROW);

RegisterClass(WindowClass);

Handle:=CreateWindowEx (0,"DX","",WS_OVERLAPPEDWINDOW, 5,5, GetSystemMetrics (SM_CXSCREEN)-200, GetSystemMetrics (SM_CYSCREEN)-200,0,0,instance, nil);

//UpdateWindow (Handle);
ShowWindow(Handle,SW_SHOW);
while (GetMessage(msg, 0, 0, 0)) do
 begin
  translatemessage(msg);
  dispatchmessage (msg);
 end;

end;

begin
Main;
end.

зы.зы. а если простая задача стоящая перед программером технически сложно реализуется, или к примеру неимоверно монстрообразная. сам подумай - если бы не API в ОС, то программы весили бы ой-ой-ой как... пришлось бы как в DOS (например (хотя там тоже куча сервисных функций, но если их недоставало пришлось придумывать свою реализацию...) оконную среду делать (ну в текстовом режиме окошки рисовать)).


> Стыдно, граждане. Во что программирование вырождается?

да пожалуйста - изобретай велосипед: делай свой навороченный парсер, и даже лучше - храни настройки в специфич. формате файла, лучше конечно если это будет бинарник, с 128 битным шифрованием :)
ну если есть стандарт, развивающийся стандарт, который поддерживается такими монстрами как Microsoft, Sun и т.п. (а главное в той ОС в которой будет работать твоя программа) то почему бы и не...?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.014 c
15-1137477920
syte_ser78
2006-01-17 09:05
2006.02.05
глюк со встроеной звуковухой


15-1137151161
Хинт
2006-01-13 14:19
2006.02.05
Редактор HTML/PHP


8-1124933210
Исследователь
2005-08-25 05:26
2006.02.05
Попытка видеозахвата (DirectShow)


2-1137772100
лом
2006-01-20 18:48
2006.02.05
Treeview


1-1135901247
Name
2005-12-30 03:07
2006.02.05
Ошибки программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский