|
#1
|
|||
|
|||
XML-редактор
Здравствуйте. я пытаюсь работать над созданием простого XML-редактора.работаю с классом TXmlDocument,на данный момент программа читает заданый файл,вкидывает в Memo,мне нужно сделать подсветку синтаксиса,и открытие файла из папки,вместо открытия прописаного файла...
программа работает немного кривовато...помогите кто чем может... Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, ComCtrls, Buttons; type TForm2 = class(TForm) Button1: TButton; XMLDocument1: TXMLDocument; Memo1: TMemo; FileOpenDialog1: TFileOpenDialog; Button2: TButton; BitBtn1: TBitBtn; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin XMLDocument1.Active := true; XMLDocument1.FileName:='C:\Users\Admin\Desktop\x\default-capability.xml'; Memo1.Text:=XMLDocument1.xml.Text ; XMLDocument1.Active := false; end; procedure TForm2.Button2Click(Sender: TObject); begin Memo1.Lines.SaveToFile('C:\Users\Admin\Desktop\x\def.xml'); end; procedure TForm2.Button3Click(Sender: TObject); begin XMLDocument1.xml.Text:=BoolToStr(FileOpenDialog1.Execute); Memo1.Text:=XMLDocument1.xml.Text; end; END. к сообщению добавил архив с проектом программы..работаю в delphi XE... добавляю текст моего XML: Код:
<?xml version="1.0" encoding="UTF-8"?> <devices> <version>0.4</version> <device> <identification> <model>G700</model> <manufacturer>SonyEricsson</manufacturer> <vendor>Sony Ericsson</vendor> <brand>Generic</brand> </identification> <storage> <type>MSD</type> <max-full>100</max-full> </storage> <display index="0"> <height unit="pixels">320</height> <width unit="pixels">240</width> <colors>262144</colors> </display> <image> <format id="JPEG" preferred="true"> <maxwidth>2592</maxwidth> <maxheight>1944</maxheight> <extension>jpg</extension> <mime-type>image/jpeg</mime-type> </format> <format id="BMP" preferred="false"> <extension>bmp</extension> <mime-type>image/bmp</mime-type> <mime-type>image/x-bmp</mime-type> <mime-type>image/x-ms-bmp</mime-type> </format> <format id="GIF" preferred="false"> <extension>gif</extension> <mime-type>image/gif</mime-type> </format> <format id="PNG" preferred="false"> <extension>png</extension> <mime-type>image/png</mime-type> </format> <format id="MNG" preferred="false"> <extension>mng</extension> <mime-type>image/mng</mime-type> </format> <format id="SVG" preferred="false"> <extension>svg</extension> <mime-type>image/svg+xml</mime-type> </format> <format id="ICO" preferred="false"> <extension>ico</extension> <mime-type>image/ico</mime-type> </format> <format id="TIFF" preferred="false"> <extension>tif</extension> <mime-type>image/tiff</mime-type> </format> <format id="MBM" preferred="false"> <extension>mbm</extension> <mime-type>image/x-epoc-mbm</mime-type> </format> <format id="WMF" preferred="false"> <extension>wmf</extension> <extension>apm</extension> <extension>clp</extension> <mime-type>image/x-wmf</mime-type> </format> <format id="OTA" preferred="false"> <extension>ota</extension> <extension>otb</extension> <mime-type>image/x-ota-bitmap</mime-type> <mime-type>image/vnd.nokia.ota-bitmap</mime-type> </format> <format id="WBMP" preferred="false"> <extension>wbmp</extension> <mime-type>image/vnd.wap.wbmp</mime-type> </format> </image> <audio> <format id="Windows Media" preferred="false"> <extension>wma</extension> <extension>asf</extension> <mime-type>audio/wma</mime-type> <mime-type>audio/x-ms-wma</mime-type> <mime-type>audio/x-ms-asf</mime-type> </format> <format id="MP4" preferred="false"> <extension>mp4</extension> <mime-type>audio/mp4</mime-type> <mime-type>audio/mp4-latm</mime-type> <mime-type>audio/mpeg4</mime-type> </format> <format id="m4a" preferred="false"> <extension>m4a</extension> <mime-type>audio/mp4</mime-type> <mime-type>audio/mpeg4</mime-type> </format> <format id="3GPP" preferred="false"> <extension>3gp</extension> <extension>3ga</extension> <mime-type>audio/3gpp</mime-type> </format> <format id="AAC" preferred="false"> <extension>aac</extension> <mime-type>audio/aac</mime-type> <mime-type>audio/x-aac</mime-type> <mime-type>audio/x-pv-aac</mime-type> </format> <format id="MP3" preferred="true"> <extension>mp3</extension> <extension>mpg</extension> <extension>mpeg</extension> <mime-type>audio/mpeg</mime-type> <mime-type>audio/x-mpeg</mime-type> <mime-type>audio/mp3</mime-type> <mime-type>audio/mpeg3</mime-type> <mime-type>audio/mpg</mime-type> <mime-type>audio/x-mp3</mime-type> </format> <format id="Real8 audio" preferred="false"> <extension>ra</extension> <mime-type>audio/x-pn-realaudio</mime-type> <mime-type>audio/vnd.rn-realaudio</mime-type> <mime-type>audio/vnd.m-realaudio</mime-type> </format> <format id="AMR" preferred="false"> <extension>amr</extension> <mime-type>audio/amr</mime-type> <mime-type>audio/x-amr</mime-type> </format> <format id="RMF" preferred="false"> <extension>rmf</extension> <mime-type>audio/rmf</mime-type> <mime-type>audio/x-rmf</mime-type> <mime-type>audio/x-beatnik-rmf</mime-type> </format> <format id="XMF" preferred="false"> <extension>xmf</extension> <mime-type>audio/xmf</mime-type> <mime-type>audio/xmf0</mime-type> <mime-type>audio/xmf1</mime-type> <mime-type>audio/mobile-xmf</mime-type> </format> <format id="MIDI" preferred="false"> <extension>mid</extension> <extension>midi</extension> <extension>imy</extension> <mime-type>audio/mid</mime-type> <mime-type>audio/midi</mime-type> <mime-type>audio/x-mid</mime-type> <mime-type>audio/x-midi</mime-type> <mime-type>audio/sp-midi</mime-type> <mime-type>audio/imelody</mime-type> <mime-type>audio/x-imelody</mime-type> <mime-type>audio/x-nokia-rng</mime-type> <mime-type>audio/vnd.semc.melody</mime-type> </format> <format id="SMAF" preferred="false"> <extension>mmf</extension> <mime-type>application/vnd.smaf</mime-type> <mime-type>application/vnd.x-smaf</mime-type> <mime-type>audio/smaf</mime-type> </format> <format id="AU" preferred="false"> <extension>au</extension> <mime-type>audio/basic</mime-type> <mime-type>audio/x-basic</mime-type> <mime-type>audio/au</mime-type> <mime-type>audio/x-au</mime-type> </format> <format id="WAV" preferred="false"> <extension>wav</extension> <mime-type>audio/wav</mime-type> <mime-type>audio/x-wav</mime-type> </format> </audio> <video> <format id="MPEG4" preferred="true"> <extension>mp4</extension> <mime-type>video/mpeg4</mime-type> <mime-type>video/mp4</mime-type> <mime-type>video/mpeg</mime-type> <mime-type>application/mpeg4</mime-type> <encoding>mpeg-4</encoding> <sound>AAC</sound> <kbits>96</kbits> </format> <format id="ASF" preferred="false"> <extension>wmv</extension> <mime-type>video/wmv</mime-type> <mime-type>video/x-ms-wmv</mime-type> <mime-type>video/x-ms-asf</mime-type> </format> <format id="3GPP" preferred="false"> <extension>3gp</extension> <mime-type>video/3gp</mime-type> <mime-type>video/3gpp</mime-type> <encoding>h264</encoding> <part>10</part> <profile>0</profile> <sound>AAC</sound> <kbits>96</kbits> </format> <format id="Real Video" preferred="false"> <extension>rm</extension> <mime-type>application/x-pn-realmedia</mime-type> <mime-type>application/vnd.rn-realmedia</mime-type> <mime-type>video/3gpp</mime-type> </format> </video> <filesystem> <filename maxlength="256" /> <folder maxlength="256" /> <path> <camera>\DCIM\</camera> <image>\Picture\</image> <video>\Video\</video> <sound>\Music\</sound> <feedsound>\music\podcasts\</feedsound> <feedvideo>\video\podcasts\</feedvideo> <feedimage>\picture\podcasts\</feedimage> <feeds>\other\podcasts\</feeds> </path> </filesystem> <drm> <oma-v1>true</oma-v1> </drm> <store name="Media Store" url="www.sonyericsson.com/mediastore"> <launchstoreexternally>true</launchstoreexternally> </store> </device> </devices> Надеюсь на любую вашу помощь... |
#2
|
|||
|
|||
1. Для подсветки синтаксиса скачай и поставть компонент(ы) SynEdit. Это самое простое решение.
2. Для выбра файла для чтения/сохранения есть такие компоненты TOpenDialog/TSaveDialog. Пример использования см. в справке. 3. Редактировать xml как текст конечно приколько, но лучше в добавок к этому иметь редактор в виде дерева. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#3
|
|||
|
|||
PHP код:
|
Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#4
|
||||
|
||||
можно сделать что-то навроде Mitec XML Viewer (не сочтите за рекламу ). но это только просмотрщик. мультидокументный. виды: дерево, текст, браузер.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#5
|
|||
|
|||
уважаемый lmikle,можете подсказать где можно найти SynEdit для Delphi XE 2010?
и если можно покажите пример использования TOpenDialog на моем коде,чтобы содержимое файла читалось в Memo1. Последний раз редактировалось Jaroslav285, 28.03.2012 в 12:52. |
#6
|
|||
|
|||
Цитата:
если можно,покажите наглядно как ето можно сделать,на сколько я понял ето осуществляется с помощью компонента TTreeView либо IwTreeView. |
#7
|
|||
|
|||
у меня есть shelltreeview на вкладке samples
|
Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#8
|
|||
|
|||
Цитата:
|
#9
|
|||
|
|||
Цитата:
Пример: Код:
procedure TForm2.Button1Click(Sender: TObject); begin If OpenDialog1.Execute Then Begin XMLDocument1.Active := true; XMLDocument1.FileName := OpenDialog1.FileName; Memo1.Text:=XMLDocument1.xml.Text ; XMLDocument1.Active := false; End; end; SynEdit здесь: http://sourceforge.net/apps/mediawik...Edit_Home_Page Он в сырцах, так что должно и так все встать. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#10
|
|||
|
|||
Цитата:
Спасибо,все получается,подсветка работает,есть пара вопросов:почему файл через диалог FileDialog открывается только с второго раза и для SaveDialog вообще не сохраняет,я думаю что надо как то описать тип файлов или что-то еще,но не знаю как ето сделать... прилагаю Код: Код:
procedure TForm2.Button2Click(Sender: TObject); begin If SaveDialog1.Execute Then Begin XMLDocument1.Active := true; XMLDocument1.FileName := SaveDialog1.FileName; SynMemo1.Text:=XMLDocument1.xml.Text ; XMLDocument1.Active := false; End; end; procedure TForm2.Button3Click(Sender: TObject); begin If OpenDialog1.Execute Then Begin XMLDocument1.Active := true; XMLDocument1.FileName := OpenDialog1.FileName; SynMemo1.Text:=XMLDocument1.xml.Text ; XMLDocument1.Active := false; End; end; |
#11
|
|||
|
|||
А вам не кажется, что для сохранения код надо писать немного другой? Компоненты диалогов обеспечивают ТОЛЬКО выбор имени файла. Для сохранения надо сделать обратную операцию чтению.
Тип файла описывается в свойствах диалога - Filter и DefaultExtention (кажется так). |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
|
#12
|
|||
|
|||
Цитата:
Спасибо,буду пытатся сделать что-то подобное. Последний раз редактировалось Jaroslav285, 29.03.2012 в 01:56. |
#13
|
|||
|
|||
Можете подсказать как сделать древовидную структкуру XML файла какой компонент нужно для етого?
я пробовал ShellTreeView,он мне выдает при помещении на форму древовидную структуру файлов проводника. Либо обьясните что нужно сделать чтобы он читал структуру файла пожалуйста. Извините что задаю очень много вопросов. |
#14
|
|||
|
|||
Просто TreeView.
При этом в самом TreeView выводишь теги целиком, а рядом брось какой-нить property editor, в котором можно редактировать все свойства тега. |
#15
|
|||
|
|||
Цитата:
Извините,а можно какой-то пример? Я нашел что-то похожее до того что вы написали,но не то: http://parsing-and-i.blogspot.com/20...ew-delphi.html я так понял вы имели в виду что можно сделать переход по тегам из TreeView в Memo. |