Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420

Работа с типом данных Long

02.11.2015, 12:03. Показов 2169. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
У меня снова проблемы с передачей параметров в web-службу.
Метод в службе принимает строку и long:
C#
1
2
3
4
public List<Dictionary<string, object>> FindPatient(string SName, long OMSInsuranceNumber)
{
//МНОГО КОДА
}
И у меня не выходит этот самый long передать. Пробую так:
PHP
1
$result = $client->FindPatient(array('SName'=>$_GET[sname], 'OMSInsuranceNumber'=>$_GET[number]));
В результате в параметр OMSInsuranceNumber передаётся число 2147483647 (максимальное значение типа int). При передаче чисел меньше этого - всё в порядке. Так как же передать большое число?
P.S. Изменять WEB-службу нельзя.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2015, 12:03
Ответы с готовыми решениями:

Глюки с типом long в java 10
Здравствуйте, дорогие форумчане, есть одна проблэмка. Объявляю переменную с типом long, помещаю в неё очень большое значение (больше, чем...

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p и возвращает ap. Помогите...

Работа с типом данных String
здравствуйте,помогите пожалуйста с задачей,не могу понять с чего начать требуется написать программу,которая считывает текст и выводит на...

6
81 / 81 / 50
Регистрация: 26.11.2012
Сообщений: 303
02.11.2015, 14:30
Лучший ответ Сообщение было отмечено FaceHoof как решение

Решение

в PHP нет такого типа данных.
А в других языках LONG == INT
оба занимают 4 байта и имеют значение: -2 147 483 648 / 2 147 483 647

исключение C#
long : -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807 - для 64х битных систем.

Соответственно INT из PHP должен интерпретироваться как LONG в C#.

А ваша проблема в том что вы передаете mixed val вместо целочисленного значения.

оберните число в floatval();

Добавлено через 6 минут
и то на выходе, увеличите число до -99 999 999 999 999 \ 99 999 999 999 999
1
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
02.11.2015, 17:41  [ТС]
temkasky, скажите пожалуйста, а можно подобное провернуть... как бы сказать... в другую сторону? У меня есть метод, который возвращает значение Long, но число приходит не корректное.
PHP
1
2
$nOMSInsuranceCompanyID = $client->GetPersField(array('ID'=>$PersonID, 'strNameField'=>'OMSInsuranceCompanyID')); 
//Почему-то возвращает единицу, хотя там должно быть как минимум трёхзначное число
Да, извините за тупой вопрос, но как это всё гуглить правильно и как оно называется? А то н ев первый раз возникают проблемы с типами данных.
0
81 / 81 / 50
Регистрация: 26.11.2012
Сообщений: 303
02.11.2015, 17:48
а саму реализацию дадите почитать?) я гаданием на вызовах методов не занимаюсь)
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
02.11.2015, 17:52  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public long GetPersField(int ID, string strNameField)
        {
            SqlConnection sqlConnection = new SqlConnection(Globals.SQLConnectionString);
            sqlConnection.Open();
            if (sqlConnection.Database != IMS.Globals.IMS_Databases[(int)IMSDATABASES.Main])
                sqlConnection.ChangeDatabase(IMS.Globals.IMS_Databases[(int)IMSDATABASES.Main]);
            PersonData pers = PersonData.GetByID(sqlConnection, ID);
            if (strNameField == "OMSInsuranceCompanyID")
                return pers.OMSInsurance.OMSInsuranceCompanyID;
            else if (strNameField == "KLADRCode")
                return pers.KLADRCode;
            else if (strNameField == "CitizenshipID")
                return pers.CitizenshipID;
            else if (strNameField == "SocialStatusesCount")
                return pers.SocialStatuses.Count;
            else if (strNameField == "Settlement")
                if (pers.Settlement==null)
                    return -1;
                else
                    return 1;
            return 0;
        }
Код срабатывает как надо, дебагером прошёлся уже не один раз.
0
81 / 81 / 50
Регистрация: 26.11.2012
Сообщений: 303
02.11.2015, 18:20
вы проверяли, правильное ли число на выходе?

допустим у нас отработает эта ветка.
C#
1
2
else if (strNameField == "SocialStatusesCount")
                return pers.SocialStatuses.Count;
саму переменную проверьте. pers.SocialStatuses.Count

и вот что мне еще не нравится
при вызове вы передаете массив как 1 обьект.
PHP
1
array('ID'=>$PersonID, 'strNameField'=>'OMSInsuranceCompanyID')
а принимаете 2 разных параметра
C#
1
public long GetPersField(int ID, string strNameField)
либо же где-то это дело у вас парсится, либо же вы просто не корректо вызываете метод и получаете
C#
1
2
else
      return 1;
Добавлено через 1 минуту
вызовите так
PHP
1
$nOMSInsuranceCompanyID = $client->GetPersField($PersonID, "OMSInsuranceCompanyID");
Добавлено через 1 минуту
Хотя у вас через обьект и в первом методе вызов, для меня это странно, но может это особенность C#, я в нем не бум-бум.
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
03.11.2015, 09:37  [ТС]
temkasky, число на выходе проверил, всё правильно, там трёхзначные числа.
Если передавать не как массив, то ничего не выходит, начинают вылезать какие-то совершенно неадекватные ошибки, а до вызова метода и вовсе дело не доходит.
На ветку return 1 код не уходит, проверил выполнение кода построчно.

Я нашёл в чём был мой косяк. Очень глупый косяк =/ Я обращался к переменной $nOMSInsuranceCompanyID как к числу, не подумав, что мне приходит объект.
Если написать
PHP
1
print_r($nOMSInsuranceCompanyID);
то получим структуру данных из этой переменной: stdClass Object ( [GetPersFieldResult] => 191 )
Соответственно теперь можно достать нужное число из объекта:
PHP
1
echo $nOMSInsuranceCompanyID->GetPersFieldResult;
Не подумал я, что даже если метод возвращает число, то в PHP всё равно приходит объект
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2015, 09:37
Помогаю со студенческими работами здесь

Работа с типом данных VARIANT
Всем привет. Сейчас работаю с некоторой динамической библиотекой(*.dll). Пытаюсь из этой dll использовать некую функцию GetTitleIDList....

Работа с файловым типом данных
Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла f,...

Работа с файловым типом данных
Пусть дан файл целых чисел. Создайте новый файл, значения в который записываются по следующему правилу: суммируются подряд идущие значения...

Работа со строковым типом данных в языке Си
Здравствуйте, я уже несколько часов не могу понять в чём проблема. Программа перестаёт работать когда я ввожу переменные i,o,p, а если я...

Работа с типом данных Blob и Varbinary
Всем, добрый день!!! Помогите, пожалуйста, разобраться сщ следующей задачей: В SQL есть таблица, в однои из полей хранится картика (тип...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru