powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / json пара
8 сообщений из 8, страница 1 из 1
json пара
    #40123463
bzums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как узнать, что значение пары строка или число?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[
		{
			"FieldName":"IntegerField",
			"FieldValueBeg":1,
			"FieldValueEnd":2
		},
		{
			"FieldName":"StringField",
			"FieldValueBeg":"3",
			"FieldValueEnd":"4"
		}
]


По первому узлу, 1 и 2, данные две строки дают истину
if xxx.JsonValue is TJSONNumber then ...
if xxx.JsonValue is TJSONString then ...

По второму - только if xxx.JsonValue is TJSONString = True...

Какбы хотолось ,чтобы то что без кавычек - это числою
Спасибо.
...
Рейтинг: 0 / 0
json пара
    #40123464
bzums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вторая часть вопроса - как такую структуру запихать в record?
Код: pascal
1.
2.
3.
4.
5.
  TUslovie = record
    value: string;
    value_beg: string;
    value_end: string;
  end;


Но мне бы надо запихать туда еще и число (может быть и то, и то).


Финальный результат - построение where по массиву записей.
Если значение - строка - то where field between '1' and '2'
Если значение - число - то where field between 3 and 4

Большое спасибо
...
Рейтинг: 0 / 0
json пара
    #40123465
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
bzums
Вторая часть вопроса - как такую структуру запихать в record?
Код: pascal
1.
2.
3.
4.
5.
  TUslovie = record
    value: string;
    value_beg: string;
    value_end: string;
  end;



Но мне бы надо запихать туда еще и число (может быть и то, и то)

если там может случиться и целое число, и строка, то это кардинально плохой подход
...
Рейтинг: 0 / 0
json пара
    #40123472
bzums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я знаю, что это плохой подход.
Использование чего будет в данном случае считаться хорогим подходом?

Все, что смог придумать - по конкретному полю смотреть тип в схеме данных и дергать сохраненные в тексте минимум и максимум как есть или конвертировать в число (если по структуре понятно, что это числовое поле).

Спасибо.
...
Рейтинг: 0 / 0
json пара
    #40123473
bzums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще один вопрос.
Будет ли Variant Parts in Records ыфходом из ситуации?
Синтаксис приблизительный.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Type
  TFieldType = (Stroka, Chislo);
  TFieldInfo = Record
    Type: TFieldType ;
    //
    begForChislo:integer;
    endForChislo:integer;  
    //
    begForStroka:string;
    endForStroka:string;
  End;



Большое спасибо
...
Рейтинг: 0 / 0
json пара
    #40123477
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bzums
И еще один вопрос.
Будет ли Variant Parts in Records ыфходом из ситуации?
Синтаксис приблизительный.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Type
  TFieldType = (Stroka, Chislo);
  TFieldInfo = Record
    Type: TFieldType ;
    //
    begForChislo:integer;
    endForChislo:integer;  
    //
    begForStroka:string;
    endForStroka:string;
  End;




Большое спасибо

Не будет. Большое пожалусто.
...
Рейтинг: 0 / 0
json пара
    #40123513
bzums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, а такой вот вариант:
Код: 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.
type
  TMyRecord = record
  strict private
    FIsNumeric: Boolean;
    FInt: Integer;
    FStr: string;
    //getters and setters
  public
    property IsNumeric: Boolean read FIsNumeric write FIsNumeric;
    property Int: Integer read GetInt write SetInt;
    property Str: string read GetString write SetString;
  end;
...
function TMyRecord.GetInt: Integer;
begin
  if IsNumeric then
    Result := FInt
  else
    raise EValueNotAvailable.Create('no no');
end;

function TMyRecord.GetString: String;
begin
  if not IsNumeric then
    Result := FString
  else
    raise EValueNotAvailable.Create('no no');
end;
...
Рейтинг: 0 / 0
json пара
    #40123555
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bzums
Хорошо, а такой вот вариант:

Это сработает, но для подобных целей уже сто лет как придуман Variant
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / json пара
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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