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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2012, 22:24   #1
MORPEH
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 45
По умолчанию api в своем приложении

Здравствуйте.
Нужна помощь примером. Понимаю что отправите в гугл, там есть примеры, но довольно сложные. Нужен простой.

В данный момент, есть программа, которая выполняет запрос к сайту. Делает так:

Код:
procedure TForm1.btn2Click(Sender: TObject);
var
cost_sms: String;
begin
idhtp1.Request.ContentType:= 'application/x-www-form-urlencoded';
cost_sms:= idhtp1.URL.URLEncode('http://primer.ru/info/news?api_id=jnk239-jnkfjn31n98n1a&cat=1';
mmo2.Text := idhtp1.Get(cost_sms);
idhtp1.Disconnect;
end;
Как сделать в программе выбор, какую библиотеку использовать. То есть в каждой длл есть примерно такой код. Как в программе выбирать длл нужную?
MORPEH вне форума Ответить с цитированием
Старый 02.07.2012, 22:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Иди ка та ы Гугол, любезнейший
Шучу. Вот как делаю я в своем плагинированном проекте:
Есть пускатель:
Код:
function Site(LibName: String):String;
type p=procedure (var res:TStringList;js:TStringList;p:TStrings);
type pe=procedure (res:TStringList;js:TStringList;p:TIdHTTPRequestInfo);

var s:TStringList;h:HMODULE; me:p; men:pe;
begin      Result:='';
 s:=TStringList.Create;js:=TStringList.Create;
 h:=LoadLibrary(pchar(ExtractFilePath(ParamStr(0))+LibName+'.dll'));
 try
     if h<>0 then begin
        me:=GetProcAddress(h,'me');
        if Assigned(me) then begin
         try
          me(s,RequestInfo.Params);
         except
           on e:Exception do s.Text:='<div class="fail">Ошибка в '+LibName+'<br>'+e.Message;
         end;
        end;
        Result:=s.Text;
      
     end;
 except
  on E:Exception do  log('Ошибка : '+e.Message);
 end  ;
  FreeLibrary(h);
  s.Free;
end;
Он вызывается так:
Site(d) где d содержит имя нужного плагина.
К примеру:
Код:
if doc='первое' then Site('First') else
if doc='Второе' then Site('Second') else
...
И так до посинения
В зависимости от того чему равен doc загружается тот или иной плагин, вызывается его главная функция, которая в плагинах описана так:
Код:
library First;

uses
  SysUtils, unitConst,
  Classes


{$R *.res}

procedure me(var res:TStringList;p_:TStrings); export;
begin
 Что-то делаем и возвращаем результат в виде строки в res.
end;

 exports me;
begin
end.
Так у меня сделан каждый плагин. p_ входящие параметры, res выходящие

Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.07.2012, 23:14   #3
MORPEH
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 45
По умолчанию

Идея ясна, можно будет если что обратиться еще?
MORPEH вне форума Ответить с цитированием
Старый 02.07.2012, 23:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пиши в эту тему.
Буду в эфире - отвечу.
Кстати мне бы тоже было интересно узнать как другие делают.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.07.2012, 00:21   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Как сделать в программе выбор, какую библиотеку использовать. То есть в каждой длл есть примерно такой код. Как в программе выбирать длл нужную?
Чтобы выбирать, нужно знать отличия и потребности пользователя относительно признаков отличий. Тут уж вы сами думайте по поводу признаков.

По поводу реализации API, что же Component Object Model уже не вариант?

Вот отличное начало раработки системы плагинов от GunSmooker'а.
Предысторию этой серии тоже рекоммендательно прочитать, там много про COM есть, а так же рассматриваются не только интефейсы, но и тараканы "почему все остальное может быть не удобным".
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как нажать определенную кнопку не на своем приложении. -=Prorok=- C# (си шарп) 5 13.10.2011 12:39
WIN32 API. Проблемы с созданием окна в консольном приложении Magnuse Помощь студентам 1 23.01.2011 14:34
TCaption в своем классе ZotaC Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 26.05.2010 19:21
использование php5ts.dll в своем приложении Dj_smart PHP 10 07.12.2008 15:17
законность использования icq клиента в своем приложении tetris Свободное общение 14 18.04.2008 12:46