Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

XML [95/98]


Страницы:   1 2

student22 ©   (2010-12-20 10:56:00) 

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


student22   (2010-12-20 13:25:00) [1]

Ну вот сейчас хоть что-то прояснилось.... всем спасибо за помощь


Ega23   (2010-12-20 13:17:00) [2]

В целом - надо мух от котлет отделить.
1. Есть некое хранилище данный (СУБД, файлы - неважно). Условно назовём "Хранилище".
2. Есть некая штука, которая умеет с этими данными работать (добавлять, изменять, удалять и делать какие-то выборки). Условно назовём "Ядро".
3. Есть некая штука, которая умеет эти данные выводить в удобном для пользователя виде. Условно назовём - "GUI".

Соответственно, если твоя задача стоит в достижении максимальной "гибкости" (например, использование разных типов хранилищ, или различные варианты вывода данных пользователю), то тебе надо все эти 3 элемента системы сделать максимально независимыми друг от друга.
Ну, например, "Ядро" имеет некоторое количество плагинов для работы с разными типами СУБД. При этом непосредственно клиент понятия не имеет, с каким типом хранилища и с какой физической СУБД в данный момент работает ядро.
Или у тебя есть разные типы "GUI". Один - браузер, один - Windows Application, а третий - вообще командная строка (why not?). Соответственно, тебе нужно, чтобы "ядро" выдавало данные в некоем "общем" формате, а также принимала входные данные/команды тоже во вполне определённом формате. Например, XML.
Тогда, если вдруг тебе понадобится подключить новый тип СУБД, или разработать новый вид GUI, тебе не придётся ломать всё старое, просто пишется дополнительный модуль.

В целом - читай тут http://ru.wikipedia.org/wiki/MVC


Ega23   (2010-12-20 13:05:00) [3]


> Т.е если есть готовое приложение на Delphi, НЕ - ВЕБ ПРИЛОЖЕНИЕ
> то организовать к нему доступ через веб нельзя?


Если есть некое обобщённое не-веб приложение, а также нельзя его трогать, то в общем случае ответ - нет.
Если можно вносить некие изменения, или приложение имеет некий API для доступа "извне", то, в принципе, можно.

> 2. Писать с нуля разделяя ядро и гуй - более правильный путь...


+ 100500


Slym   (2010-12-20 12:47:00) [4]

3 путь - приделать АПИ и уже потом делать сервер


Slym   (2010-12-20 12:18:00) [5]

не правя предыдущую программу ничего не получится...
2 пути:
1. Т.к. прога никакого АПИ не поддерживает то имплантировать в нее веб сервер (к примеру через TIdHTTPServer) - как заплатка...
2. Писать с нуля разделяя ядро и гуй - более правильный путь...


Медвежонок ХМЛ   (2010-12-20 12:14:00) [6]

Я не могу разобраться как организовать связь между готовым приложением и гуем написанным для этого приложения на хмл

Не надо организовывать ТО, что УЖЕ организовано сто лет назад.

Связь браузера и веб-сервера организована в прошлом веке.
Не надо ее организовывать реализовывать заново.

Надо реализовывать то, чего у тебя нет.

У тебя нет ВЕБ СЕРВЕРА в твоем приложении.

Вот его и реализовывай-организовывай.


clickmaker   (2010-12-20 12:06:00) [7]

хотя, непонятно, что значит "организовать к нему доступ через веб"?
готовое приложение на Delphi должно данные предоставлять или оттуда интерфейс нужен?


brother   (2010-12-20 12:05:00) [8]

А может и недостаток знаний... но я пока, ничего не понял...


brother   (2010-12-20 12:04:00) [9]

У тебя каша в голове, имхо. Поставь правильно вопрос...


clickmaker   (2010-12-20 12:04:00) [10]

> Т.е если есть готовое приложение на Delphi, НЕ - ВЕБ ПРИЛОЖЕНИЕ
> то организовать к нему доступ через веб нельзя?

через веб-сервис можно


student22   (2010-12-20 12:02:00) [11]


> Ega23 ©


Т.е если есть готовое приложение на Delphi, НЕ - ВЕБ ПРИЛОЖЕНИЕто организовать к нему доступ через веб нельзя? И Следовательно как я понял надо это НЕ - ВЕБ ПРИЛОЖЕНИЕ переписывать как ВЕБ-ПРИЛОЖЕНИЕ?


Ega23   (2010-12-20 11:59:00) [12]

Повторяю ещё раз: у тебя это не получится. Забудь про программу. Пиши всё заново.
Переводи и толстый и тонкий клиент на трёх-четырёх-звенку. Тогда есть небольшой шанс, что и обычное приложение, и веб-морда будут работать более-менее одинаково.


student22   (2010-12-20 11:58:00) [13]


> Ega23 ©   (20.12.10 11:53) [19]
> > Я не могу разобраться как организовать связь между готовым
> > приложением и гуем написанным для этого приложения на хмл
> В 99% случаев этого не получится.


Slym ©, скажи пожалуйста, что это не так)


student22   (2010-12-20 11:56:00) [14]


> Ega23 ©   (20.12.10 11:47) [16]
> > А можно поподробнее, как это реализоватьЕсть браузер,
> есть веб-сервер, есть программа, которая крутится на сервере.
> Программа может быть интерпретатором php, может быть cgi-
> приложением, может fastcgi, может (короче, вариантов - дофига).
> Программа умеет распознавать HTTP-Request, на основании
> запроса умеет генерить данные в нужном формате и отдавать
> их обратно. Данные могут браться из разных мест, в частности
> (как правило) из какой-то БД.Браузер получает данные и отображает.
> Как-то так


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


Ega23   (2010-12-20 11:53:00) [15]


> Я не могу разобраться как организовать связь между готовым
> приложением и гуем написанным для этого приложения на хмл


В 99% случаев этого не получится.


student22   (2010-12-20 11:51:00) [16]


> Медвежонок ХМЛ ©   (20.12.10 11:46) [15]


> Что "ЭТО"?


Я не могу разобраться как организовать связь между готовым приложением и гуем написанным для этого приложения на хмл


student22   (2010-12-20 11:48:00) [17]


> Slym ©


Спасибо!


Ega23   (2010-12-20 11:47:00) [18]


> А можно поподробнее, как это реализовать


Есть браузер, есть веб-сервер, есть программа, которая крутится на сервере.
Программа может быть интерпретатором php, может быть cgi-приложением, может fastcgi, может (короче, вариантов - дофига).
Программа умеет распознавать HTTP-Request, на основании запроса умеет генерить данные в нужном формате и отдавать их обратно. Данные могут браться из разных мест, в частности (как правило) из какой-то БД.
Браузер получает данные и отображает.
Как-то так.


Медвежонок ХМЛ   (2010-12-20 11:46:00) [19]

Я это понимаю.
А можно поподробнее, как это реализовать


Что "ЭТО"?

"ЭТО" - уже реализовано. Все браузеры умеют запрашивать и получать данные с веб-серверов.


Slym   (2010-12-20 11:44:00) [20]

http://127.0.0.1/?a=1&b=1

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
 IdCustomHTTPServer, IdHTTPServer,IdContext;

type
 TForm1 = class(TForm)
   A: TEdit;
   B: TEdit;
   C: TEdit;
   Button1: TButton;
   IdHTTPServer1: TIdHTTPServer;
   procedure Button1Click(Sender: TObject);
   procedure IdHTTPServer1CommandGet(AContext: TIdContext;
     ARequestInfo: TIdHTTPRequestInfo;
     AResponseInfo: TIdHTTPResponseInfo);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 c.Text:=IntToStr(StrToInt(A.Text)+StrToInt(B.Text));
end;

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
 AResponseInfo.ContentText:='a+b='+
 ARequestInfo.Params.Values['a']+'+'+ARequestInfo.Params.Values['b']+'='+
 IntToStr(StrToIntDef(ARequestInfo.Params.Values['a'],0)+StrToIntDef(ARequestInfo.Params.Values['b'],0));
end;

end.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо