Maxizar
Спастбо
Модератор: Модераторы
sign писал(а):Vadim писал(а):sign
Во многих случаях вообще лучше использовать чисто текстовый файл с жёстко заданной последовательностью значений.
Согласен, что при этом может возникнуть путаница, если при составлении файла будет что-то перепутано. У меня есть программа для студентов, лабораторная работа, где исходные данные формирует преподаватель в виде текстового файла значений и пока что никаких проблем не возникало.
Суть в другом.
Суть форматов, таких как XML, JSON и других - самодокументируемость данных.
Добавлено спустя 5 минут 15 секунд:qivi писал(а):Vadim писал(а):sign
Во многих случаях вообще лучше использовать чисто текстовый файл с жёстко заданной последовательностью значений.
Сперва я использовал INI - просто и понятно, всё бы ничего, но возникли проблемы с многострочным полем, записывал он его всё, а вот считывал только первую строчку... можно было б конечно прикрутить какие ни будь педали заменяющие перенос каретки на какую нибудь комбинацию символов до записи в файл и обратно после чтения... но я просто выбрал XML.В качестве очередного велосипеда, могу предложить делать первоначально проверку на наличие обязательных узлов в xml-файле и только после этого пытаться уже обрабатывать данный файл если он прошел проверку
Padre_Mortius, а как выглядит проверка наличия определённого узла в открытом XML файле?
Мой путь.
Но тут я удачно наткнулся на JSON.
Для вас - http://www.progdigy.com/?page_id=6
TSuperObject = class;
ISuperObject = interface;
TSuperArray = class;
<CONFIG once_configured="True" ad2d_primary_lib="AndorraLib.dll">
<display width="800" height="600" windowCaption="Overkill project"/>
<redraw fps_limit="40" threadsleep="20"/>
</CONFIG>
{ "once_configured" : True, "ad2d_primary_lib" : "AndorraLib.dll", "display" : { "width" : 800, "height" : 600, "windowCaption" : "Overkill project" }, "redraw" : { "fps_limit" : 40, "threadsleep" : 20 } }
XML_F2.ChildNodes.Item[0].ChildNodes.Item[0].Attributes
XML_F2.ChildNodes.Item[0].ChildNodes.Item[0].Attributes.Length
XML_F2.ChildNodes.Item[0].ChildNodes.Item[0].Attributes.Count
VinSS писал(а):... но все время получаю "SIGSEGV" на s:=UTF8Encode(PassNode.TextContent). Что я только ни делал!
Проблема судя по всему в том, что кодировка юникод (<?xml version="1.0" encoding="unicode"?>).
Как побороть, что посоветуете?
procedure TForm1.MenuItem4Click(Sender: TObject);
var
s:string;
PassNode: TDOMNode;
Doc: TXMLDocument;
begin
ReadXMLFile(Doc, '\servertypestype_1all_filesfile_00529759file529759.xml');
PassNode := Doc.DocumentElement.FindNode(number);
if not (PassNode = nil) then //!!!!!!!!!!!!!!!!!!!!!!!!!
s:=UTF8Encode(PassNode.TextContent);
Doc.Free;
end;
VinSS писал(а):...
Что я могу принципиально неправильное делать?
VinSS писал(а):Что я могу принципиально неправильное делать?
VinSS писал(а):Что я могу принципиально неправильное делать?
try
ReadXMLFile(f, FileName);
...
except
ShowMessage('Я указал неправильное имя файла ;)');
end;
dunin писал(а):XML-ину в студию.
v-t-l писал(а):Например, DocumentElement.FindNode не рекурсивна и ищет только по "детям", а не по "внукам" и "правнукам".
leo_bsv писал(а):например ошибаться в имени файла...
VinSS писал(а):Обрезал xml по максимому, в нем просто несколько страниц и кучи данных на них.
<?xml version="1.0" encoding="unicode"?>
VinSS писал(а):s:=UTF8Encode(PassNode.TextContent);
s := PassNode.FirstChild.NodeValue;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 231