Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Альма
12 / 9 / 4
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
1

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

12.12.2012, 22:27. Просмотров 848. Ответов 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
Ответы с готовыми решениями:

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

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

Не могу разобраться
На форме есть 3 кнопки при нажатии которых происходит действие не могу сообразить как сделать...

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

не могу разобраться
Program Example; {$APPTYPE CONSOLE} uses SysUtils, Ruskey in 'D:\Ruskey.pas'; //...

6
cotseec
Пишу на Delphi...иногда
1407 / 1267 / 284
Регистрация: 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
26146 / 17524 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
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 / 4
Регистрация: 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
26146 / 17524 / 6949
Регистрация: 22.10.2011
Сообщений: 30,859
Записей в блоге: 6
12.12.2012, 23:00 5
Изменить имя интерфейса, разумеется. Например, на ICustomer.
0
cotseec
Пишу на Delphi...иногда
1407 / 1267 / 284
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
12.12.2012, 23:00 6
изменить имя класса или интерфейса и ссылки, если есть, на них,
проще интерфейса (главное GUID не трогать)
0
Альма
12 / 9 / 4
Регистрация: 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

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

Не могу разобраться с циклом
Задача нахождения минимума функции методом наискорейшего спуска из 2х переменных вида:...

Не могу разобраться с ошибкой
Доброго времени суток.Вообщем отрезок задачи в котором по идее двумерный массив должен быть в...


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

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

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