Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
#1

Не могу разобраться в WSDL документе - Delphi

12.12.2012, 22:27. Просмотров 790. Ответов 6
Метки нет (Все метки)

Раньше с ними никогда работать не приходилось..
По порядку: File - New - Other - WebServices - WSDLImporter
Открыл WSDL со всеми процедурами, все как надо, но ошибок в нем валом...
Например
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
  Customer = class(TRemotable)
  private
    Fid: Cardinal;
    Ftype_: Int64;
    Fgroup: Cardinal;
    Finfo: Array;
  published
    property id:    Cardinal  read Fid write Fid;
    property type_: Int64     read Ftype_ write Ftype_;
    property group: Cardinal  read Fgroup write Fgroup;
    property info:  Array     read Finfo write Finfo;
  end;
Выбивает ошибку на Array, т.к. не указана размерность и тип элементов, видимо...Но что там указывать, без понятия..МНе дали готовый файл, работай.
И что значат строки типа
Delphi
1
    property group: Cardinal  read Fgroup write Fgroup;
Откуда и для чего эти read, write?
Извиняюсь, если вопросы не совсем корректные, т.к. повторяю, работаю впервые..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 22:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу разобраться в WSDL документе (Delphi):

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать - Delphi
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива и сумму элементов массива,...

Не могу создать WSDL Importer - Delphi
Нужно создать приложение с использованием SOAP. Я в этом деле новичок. Видела пример, там нужно File-New-Other-WebServices-WSDL...

не могу разобраться - Delphi
Program Example; {$APPTYPE CONSOLE} uses SysUtils, Ruskey in 'D:\Ruskey.pas'; // подключаем модуль с функцией Rus Var...

Не могу разобраться - Delphi
Написал программку,но она как бы не очень хорошо работает) Суть ее заключается в том,что бы если в определенном текстовом файле...

Не могу разобраться - Delphi
Такая проблема, нужно по названию игры её убивать Надо было для учебного заведения убирать cs и вот что сделал, но дело в том что по...

Не могу разобраться с ListBox - Delphi
Здравствуйте, я не могу разобраться со списками ListBox Я делаю небольшую утилитку, которая будет работать с консольным приложением. ...

6
cotseec
Пишу на Delphi...иногда
1401 / 1261 / 174
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
12.12.2012, 22:40 #2
Цитата Сообщение от Альма Посмотреть сообщение
И что значат строки типа
Delphi
1
property group: Cardinal read Fgroup write Fgroup;
Откуда и для чего эти read, write?
эта строка означает, что в некотором классе есть свойство group типа cardinal, для изменения этого свойства (чтения - read и записи - write) есть переменная Fgroup, вне этого класса она недоступна, для обращения к ней служит как раз это свойство.
Почитайте что-нибудь про ООП

из какой-то статьи
Поля данных, исходя из принципа инкапсуляции — одного из основополагающих в объектно-ориентированном программировании, всегда должны быть защищены от несанкционированного доступа. Доступ к ним, как правило, должен осуществляться только через свойства, включающие методы чтения и записи полей. Поэтому поля целесообразно объявлять в разделе private - закрытом разделе класса. В редких случаях их можно помещать в protected — защищенном разделе класса, чтобы возможные потомки данного класса имели к ним доступ. Традиционно идентификаторы полей совпадают с именами соответствующих свойств, но с добавлением в качестве префикса символа F.

Свойство объявляется оператором вида:
property <имя свойства>:<тип>
read
<имя поля или метода чтения>
write
<имя поля или метода записи>
<директивы запоминания>;

Если в разделах read или write этого объявления записано имя поля, значит предполагается прямое чтение или запись данных (т.е. обмен данными непосредственно с полем).

Если в разделе read записано имя метода чтения, то чтение будет осуществляться только функцией с этим именем. Функция чтения — это функция без параметра, возвращающее значение того типа, который объявлен для свойства. Имя функции чтения принято начинать с префикса Get, после которого следует имя свойства.

Если в разделе write записано имя метода записи, то запись будет осуществляться только процедурой с этим именем. Процедура записи — это процедура с одним параметром того типа, который объявлен для свойства. Имя процедуры записи принято начинать с префикса Set, после которого следует имя свойства.

Если раздел write отсутствует в объявлении свойства, значит это свойство только для чтения и пользователь не может задавать его значение.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24636 / 16306 / 5011
Регистрация: 22.10.2011
Сообщений: 28,876
Записей в блоге: 5
12.12.2012, 22:42 #3
Цитата Сообщение от Альма Посмотреть сообщение
работаю впервые..
То, что ты впервые работаешь с WSDL, не дает тебе права не знать, что такое свойства объекта.

А с Finfo: Array действительно ошибка, очень интересно, почему неверно генерируется класс. Должно генерироваться что-то вот такого типа:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
  Arr = array of { тут некий тип элементов }
 
  Customer = class(TRemotable)
  private
    Fid: Cardinal;
    Ftype_: Int64;
    Fgroup: Cardinal;
    Finfo: Arr;
  published
    property id:    Cardinal  read Fid write Fid;
    property type_: Int64     read Ftype_ write Ftype_;
    property group: Cardinal  read Fgroup write Fgroup;
    property info:  Arr     read Finfo write Finfo;
  end;
0
Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
12.12.2012, 22:56  [ТС] #4
Еще вопрос
Описан класс
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
Customer = class(TRemotable)
  private
    Fid: Cardinal;
    Ftype_: Int64;
    Fgroup: Cardinal;
    Finfo: Arr;
  published
    property id:    Cardinal  read Fid write Fid;
    property type_: Int64     read Ftype_ write Ftype_;
    property group: Cardinal  read Fgroup write Fgroup;
    property info:  Arr       read Finfo write Finfo;
  end;
Затем интерфейс
Delphi
1
2
3
4
5
Customer = interface(IInvokable)
  ['{E006FA42-8302-2A9A-17C5-3AD65AC33213}']
    function  getCustomerGroups: Arr; stdcall;
...
  end;
Здесь он выдает ошибку [DCC Error] customer1.pas(199): E2004 Identifier redeclared: 'Customer'
Как исправить?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24636 / 16306 / 5011
Регистрация: 22.10.2011
Сообщений: 28,876
Записей в блоге: 5
12.12.2012, 23:00 #5
Изменить имя интерфейса, разумеется. Например, на ICustomer.
0
cotseec
Пишу на Delphi...иногда
1401 / 1261 / 174
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
12.12.2012, 23:00 #6
изменить имя класса или интерфейса и ссылки, если есть, на них,
проще интерфейса (главное GUID не трогать)
0
Альма
12 / 9 / 1
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
12.12.2012, 23:11  [ТС] #7
А если у меня пустой проект и просто подключен WSDL, он по идее при условии отсутствия ошибок должен просто запуститься и ничего не делать?
0
12.12.2012, 23:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 23:11
Привет! Вот еще темы с ответами:

Не могу разобраться с PageControl - Delphi
В поле Properties-&gt;ActivePage ввожу TabSheet1 пишит ошибку!

Не могу разобраться с сохранением - Delphi
Пожалуйста, помогите!! Я уже всю голову сломала, не могу понять что от меня хотят! Вот задание: Дан список, в нем записаны фамилии...

Альбом. Не могу разобраться - Delphi
Дано 2 формы! Как сделать что бы при нажатии на первой форме на TImage1 вылезала 2 форма с картинками , и при нажатии на TImage2 тоже...

Не могу разобраться с TForm - Delphi
Доброго времени суток, делал свою программу и наткнулся на проблемку! У меня прога из двух форм: Form1:= Авторизация; Form2:=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.