powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / проблема с написанием сервера Web Services
13 сообщений из 13, страница 1 из 1
проблема с написанием сервера Web Services
    #39493968
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я только учусь писать Web приложения.
Попробовал написать тестовое приложения конвертация валют. Все получилось.
Далее захотел добавить в сервере коннект к БД.
В модуле реализации добавил текст(описание модуля ниже), и клиент выдает ошибку:"не найден указанный модуль"
Что я сделал не так? Какой модуль не найден?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
unit u_Impl;

interface
//uses InvokeRegistry, u_Intrf; 
uses InvokeRegistry, Types, XSBuiltIns, u_Intrf,
ADODB,Provider,DBClient,Classes,SysUtils,ActiveX ;

type
  TEncodeDecode = class(TInvokableClass, IEncodeDecode)
  protected
    function US2RUS(Value: Currency): Currency; stdcall;
    function RUS2US(Value: Currency): Currency; stdcall;
  end;

implementation

{ TEncodeDecode }

function TEncodeDecode.RUS2US(Value: Currency): Currency;
begin
  Result := Value / 30;
end;

function TEncodeDecode.US2RUS(Value: Currency): Currency;
begin
CoInitialize(nil);
try
    with TADOQuery.Create(nil) do
    try
      ConnectionString := 'здесь коннект к БД';
      SQL.Text := 'select * from Table';
      Open;
      Result := RecordCount;
    finally
      Free;
    end;
  finally
    CoUninitialize;
  end;

 // Result := Value * 30;
end;

initialization
  InvRegistry.RegisterInvokableClass(TEncodeDecode);
end.



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494007
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovkin1307,

Текст ошибки полностью приведи. В ошибке "не найден модуль" имя модуля тоже присутствует.
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494021
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

вот скриншот ошибки
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494039
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,
вот клиентская часть

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
unit U_client;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IServer2, InvokeRegistry, Rio, SOAPHTTPClient, StdCtrls;

type
  TForm2 = class(TForm)
    Button2: TButton;
    HTTPRIO1: THTTPRIO;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
var
  X:IServer;
  R:Currency;
begin
  X:=HTTPRIO1 as IServer;
  R:=X.US2RUS(StrToCurr(Edit1.Text));
  ShowMessage(CurrToStr(R)+'руб.');
end;

end.



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
unit IServer2;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type

  IServer = interface(IInvokable)
  ['{6DFC6BCC-5681-BF19-D2FF-74E314FC1172}']
    function  US2RUS(const Value: Double): Double; stdcall;
  end;

function GetIServer(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IServer;

implementation

function GetIServer(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IServer;
const
  defWSDL = 'D:\autoZ\IServer.xml';
  defURL  = 'http://localhost:8080/cgi-bin/Server.exe/soap/IServer';
  defSvc  = 'IServerservice';
  defPrt  = 'IServerPort';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as IServer);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


initialization
  InvRegistry.RegisterInterface(TypeInfo(IServer), 'urn:ServerIntf-IServer', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IServer), 'urn:ServerIntf-IServer#%operationName%');

end.
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494238
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замени X:=HTTPRIO1 as IServer; на GetIServer()
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494340
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X-Cite,

Не помогло, та же ошибка(
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494341
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X-Cite,

если все закомментарить и по одной строчке раскрывать, то на этой строке возникает ошибка

with TADOQuery.Create(nil) do

видимо что то с ADO
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494363
KohrAhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovkin1307,

попробуй написать так:

Код: pascal
1.
2.
3.
4.
5.
6.
	CoInitialize(nil);
	begin
		try .. finally ... end

	end;
	CoUninitialize;



да, именно так, с begin & end
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494384
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KohrAhr,

та же ошибка(

а может Апачи не видит пути?
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494386
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovkin1307X-Cite,
если все закомментарить и по одной строчке раскрывать, то на этой строке возникает ошибка
with TADOQuery.Create(nil) do
видимо что то с ADO
Как вариант включить опцию Use Debug DCU's и пошагово выполнить этот Create, посмотрев какой именно модуль не найден. Но походе что не хватает какого-то драйвера в ADO.
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494616
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpКак вариант включить опцию Use Debug DCU's и пошагово выполнить этот Create, посмотрев какой именно модуль не найден. Но походе что не хватает какого-то драйвера в ADO.Совет глупый. Ошибка возникает при вызове LoadFromLibrary где-то внутри CreateComObject


vovkin1307,

Запускайте ProcessMonitor и смотрите к каким файлам обращается Ваша программа и почему их не видно
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494670
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovkin1307,

попробуй после CoInitialize(nil) еще сделать вызов OleInitialize(nil)
...
Рейтинг: 0 / 0
проблема с написанием сервера Web Services
    #39494706
vovkin1307
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,

сделал как советовали в http://www.cyberforum.ru/delphi-networks/thread1343227.html
заработало.
Заморачиваться дальше не стал.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / проблема с написанием сервера Web Services
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]