Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 14:12   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
К сожалению, текст по WriteString пишется исключительно однострочный
Всетки жаль что у тя хелп отменили... Лана вот пример на скорую руку.
Код:
unit Unit1;

interface

uses      inifiles,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var i:TIniFile;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
VAR S:TStringStream;
begin
  s:=TStringStream.Create;
  Memo1.Lines.SaveToStream(s);
  s.Position:=0;
  i.WriteBinaryStream('q','w',s);
  s.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
VAR S:TStringStream;
begin
  s:=TStringStream.Create;
  i.ReadBinaryStream('q','w',s);
  ListBox1.Items.Text:=s.DataString;
  s.Free;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 i.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 i:=TIniFile.Create('c:\temp\i');

end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2009, 14:54   #12
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

Если надо много строк сохранить, то можно элементарно сделать через memo {memo1.lines.loadfromfile(filename) memo1.lines.savetofile(flename)}. Только если всякие параметры сохранять, то трудно их доставать потов, но возможно.
Я сохранял в inifiles и многострочные док-ты, делал так - загружал необходимый текст в memo, после чего сохранял все строки, заменяя перевод на новую строку каким-нибудь символом. Когда нужно загрузить инфу из inifile, то по тому же алгоритму делал, только уже символы заменял на перевод на новую строку
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 07.10.2009, 14:59   #13
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Можно ещё JSON использовать
http://json.org/json-ru.html
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 07.10.2009, 15:19   #14
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

Для AnTe, По поводу Xml-парсера.
Я уже писал — самый надёжный быстрый и удобный парсер — это nativeXml.
http://www.simdesign.nl/xml.html
Вместе с ним идут примеры.

Сам уже давно пользуюсь. Очень удобный.
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 08.10.2009, 10:19   #15
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Всетки жаль что у тя хелп отменили... Лана вот пример на скорую руку.
спасибо! действительно, отменили....
про Write/ReadBinaryStream не знал

Цитата:
Сообщение от postal2 Посмотреть сообщение
Если надо много строк сохранить, то можно элементарно сделать через memo {memo1.lines.loadfromfile(filename) memo1.lines.savetofile(flename)}.
угу, а у меня на форме мнооого мемок и листбоксов... вот и получается куча файлов, да и реализация громоздкая

Цитата:
Сообщение от postal2 Посмотреть сообщение
Я сохранял в inifiles и многострочные док-ты, делал так - загружал необходимый текст в memo, после чего сохранял все строки, заменяя перевод на новую строку каким-нибудь символом. Когда нужно загрузить инфу из inifile, то по тому же алгоритму делал, только уже символы заменял на перевод на новую строку
вот я долго ломал, какой же символ взять на замену, и НЕ ПРИДУМАЛ !

Цитата:
Сообщение от GenniY Посмотреть сообщение
Для AnTe, По поводу Xml-парсера.
Я уже писал — самый надёжный быстрый и удобный парсер — это nativeXml.
http://www.simdesign.nl/xml.html
Вместе с ним идут примеры.

Сам уже давно пользуюсь. Очень удобный.
спасибо, посмотрю!
AnTe вне форума Ответить с цитированием
Старый 08.10.2009, 18:14   #16
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию чайниковские вопросы....

nativeXml - вроде как платный
я пока ещё точно не уверен, помешает ли мне это
хотел попробовать SimpleXML, но нашёл отзывы, что в делфях, младших 7й, он некорректно работает, вдруг решу перейти

в общем остановился пока на микрософтовском, более того, его делфёвой обёртке - TXMLDocument

есть небольшая особенность: ни с XML, ни с типом variant, ни с интерфейсами ранее я не работал

к сожалению, не нашёл русского хелпа или статьи, и, поскольку моя задача, надеюсь, простая, пытаюсь методом научного тыка воссоздать простенькую структуру, например, со статьи в википедии


---------------------
<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
<title>Простой хлеб</title>
<ingredient amount="3" unit="стакан">Мука</ingredient>
<ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
<ingredient amount="1" unit="чайная ложка">Соль</ingredient>
<instructions>
<step>Смешать все ингредиенты и тщательно замесить.</step>
<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>
--------------

создаю док, похоже, это необходимые строки?

Код:
procedure TfmTest.btnGenerateClick(Sender: TObject);
var
  XMLNodeFirst, XMLNode: IXMLNode;
  XML: IXMLDocument;
begin
  XML := TXMLDocument.Create(nil);
  XML.Active := True;
  XML.Encoding := 'UTF-8';
  XML.Version := '1.0';
Далее, само наполнение:

Код:
  XMLNode := XML.AddChild('recipe');
  XMLNode.Attributes['name'] := 'хлеб';
  XMLNode.Attributes['preptime'] := 5;
  XMLNode.Attributes['cooktime'] := '180'; // кстати не понял, в чём разница, в кавычках писать или без - всё преобразуется?
как создать содержимое элемента - я так и не понял, поэтому только создаю сам узел
Код:
  XMLNode := XMLNodeFirst.AddChild('title');
// XMLNode.???   :=  'Простой хлеб';
вообще, честно говоря я не понял, для чего нужны "атрибуты" - их ведь можно было сохранять как отдельные элементы. Исключительно для удобства восприятия, когда просматриваешь результирующий XML файл?


ну, дальше по аналогии
Код:
  XMLNode := XMLNodeFirst.AddChild('ingredient');
  XMLNodeFirst.Attributes['amount'] := 3;
  XMLNodeFirst.Attributes['unit'] := 'грамм';
//  XMLNodeFirst.??? := 'Мука'
дальше аналогия продолжается, даже не стал дописывать

в конце сохранение, и проверка:
Цитата:
XML.SaveToFile('c:\1.txt');
memo1.Lines.LoadFromFile('c:\1.txt' );
смущает результат:

<?xml version="1.0"?>
<recipe name="хлеб" preptime="5" cooktime="180" amount="3" unit="�такан"><title/><ingredient/></recipe>

это правильно пишется? как можно сразу писать по-русски, чтобы потом редактировать можно было в блокноте? и желательно чтобы с форматированием было. Или.. где его посмотреть в читабельном виде? открыл в IE - та же белиберда...

с чтением похоже ещё больше загадок, если я правильно понимаю, читать можно, проверяя например if XMLNode.HasAttribute('amount')) then s := VarToStr(XMLNode.Attributes['amount'];
(s: string)

но если у меня amount - целочисленное, его можно вытащить только приводя, типа N := StrToInt(s)?


если кто знает... если не затруднит - дайте какой-нибудь простенький хелп, ликбез - мне нужно только сохранить и считать из файла свой объект с разнотипными полями (стандартные типы delphi)

ps чувствуется огребусь я с этим сохранением.....

Последний раз редактировалось AnTe; 08.10.2009 в 18:21.
AnTe вне форума Ответить с цитированием
Старый 08.10.2009, 18:22   #17
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

Цитата:
смущает результат:

<?xml version="1.0"?>
<recipe name="хлеб" preptime="5" cooktime="180" amount="3" unit="�такан"><title/><ingredient/></recipe>
Смени кодировку

Цитата:
nativeXml - вроде как платный
Я скачал бесплатно.

Цитата:
в общем остановился пока на микрософтовском, более того, его делфёвой обёртке - TXMLDocument
А кто-то просил надёжность....
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 09.10.2009, 16:29   #18
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
Хорошо

Цитата:
Сообщение от GenniY Посмотреть сообщение
Смени кодировку
а как это сделать?

Цитата:
Я скачал бесплатно.
вот полный адрес ссылки на скачивание, с предоставленной страницы
http://www.simdesign.nl/download/ins...xml(trial).exe
правда, я даже не стал разбираться, какие там ограничения

Цитата:
А кто-то просил надёжность....
а разве микрософтовский не самый тормозной, но самый надёжный...?

Офонареть! Форумчанин GenniY оказался на самом деле гением!

Его выводы о nativeXml полностью соответствуют действительности!

Мгновенная скорость создания, загрузки, надёжность, безглючность, и, что очень-очень немаловажно - предельная простота использования, логичность имён процедур и функций - всё это просто ошарашило, после попыток чтений занудных документаций на мелкософтовское творение, созданное, по всей видимости, для издевательств над пользователями!

Огромное, огромное ему спасибо за то, что наставил на путь Истинный!

Последний раз редактировалось Stilet; 09.10.2009 в 16:46.
AnTe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Xml в Delphi bestlover Компоненты Delphi 60 12.01.2013 00:14
XML формата и Delphi S_Yevgeniy Общие вопросы Delphi 2 02.09.2009 11:35
XML (Delphi) VadEr Помощь студентам 11 23.06.2009 23:32
xml в delphi /Arven/ Компоненты Delphi 0 23.04.2008 22:47
Xml и Delphi KlErik Общие вопросы Delphi 2 14.05.2007 09:54