powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться!!!!!
11 сообщений из 11, страница 1 из 1
Помогите разобраться!!!!!
    #36263502
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в коде в этом коде не так

Class TEST.Report Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{


Method Report() As %Integer
{
S Y=$O(^["NAMESPACE"]GLOBAL(Y)) QUIT:Y=" "
QUIT Y
}
}
если вылетает ошибка <UNDEFINED>zReport+1^TEST.Report.2

Спасибо
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263559
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stroydogЧто в коде в этом коде не так

Я бы даже сказал:
- Этого "что-то" там несколько


stroydogвылетает ошибка <UNDEFINED>zReport+1^TEST.Report.2

И это только начало!
Вот тут
Код: plaintext
^["NAMESPACE"]GLOBAL(Y)
неопределена переменная Y ...

И если уж Метод должен вернуть нечно типа %Integer - то тут
Код: plaintext
QUIT:Y=" " 
нужно таки что-то вернуть...
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263629
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Задача вообщем в следующем есть область в ^GLOBAL в глобале есть Y это список, мне нужно вернуть это список и отобразить в Memo, а мне постоянно UNDEFINED вылетает.
как быть?

Спасибо
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263800
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Ошибку победил, вопрос второй возвращается только одно значение, а их там 100, если
написать так:

ClassMethod Report(Y As %String) As %String
{
S X=""
F S I=$O(^["NAMESPACE"]GLOBAL(Y,Q)) QUIT:I="" S X=I
QUIT IZ
}

зависат все и в процессах Cache программа начинает съедать оч много памяти.

как быть?

Спасибо.
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263804
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

и еще почему русские буквы возвращаются как зябра кадабра и что с этим сделать?

Спасибо.
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263823
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stroydogв ^GLOBAL в глобале есть Y

А что ты знгаешь про этот Y? Прочитать начение ^["NAMESPACE"]GLOBAL(Y) можно лишь точно зная что-то про Y...
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263832
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stroydogкак быть?

Для этого расскажи суть задачки и приведи пример с 5-10 данными...

stroydogпочему русские буквы возвращаются как зябра кадабра и что с этим сделать?

Возвращаются куда? Кодировка возможно разная... Т.ч. давай дольше информации по задаче...
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36263933
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Задача в следующем: в ^GLOBAL есть индекса X (числа от 1 до 100 в столбик) нужно получить все эти числа и отобразить в комбобоксе, ко мне возращаются либо первое значение этого индекса то есть 1 если код такой:

S Z=""
S I=$O(^["NAMESPACE"]GLOBAL(Y)) QUIT:Y="" S Z=I
QUIT Z

или 100 если код такой:

S Z=""
F S I=$O(^["NAMESPACE"]GLOBAL(Y)) QUIT:Y="" S Z=I
QUIT Z

а мне надо все от 1 до 100 в столбик что в выпадающий список их запихнуть в Дельфи

Спасибо
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36264079
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stroydogмне надо все от 1 до 100 в столбик что в выпадающий список их запихнуть в Дельфи

Ага, вона че... А ты посредством чего связываешь Дельфи с Кащеем? Хотя может это в твоем случае не так и важно... Вот тебе как вариант.

Код: plaintext
1.
2.
3.
4.
5.
Method Report(Item As %Integer) As %Integer
{
   S Item=$O(^["NAMESPACE"]GLOBAL(Item)) 
   Q:Item=""  0 
   Q Item
}

Вызывай этот метод из Дельфей в цикле, пока он не вернет 0. Т.е. нечто такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
s i= 0 
do {
   s i=Report(i)
   if i'=0 {
      // тут некие действия нужные тебе
   }
} while i'= 0 
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36265248
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот примерный код, которым я часто пользуюсь.

1. В Cache:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
/// Список в формате справочника
ClassMethod LoadSpr(BID As %Integer, GlobalName As %String, PropertyDescriptIndex As %Integer =  0 ) As %List
{
	s Rez = ""
	#;
	s ID = BID
	f {
		s ID = $o(@GlobalName@(ID), 1 ,lst)
		q:(ID="")
		#;
		s Descript = $case(PropertyDescriptIndex,  0 :ID, :$lg(lst,PropertyDescriptIndex))
		#;
		s tmp = $lb($lb(ID,Descript))
		q:($l(Rez)+$l(tmp) >  32000 )
		s Rez = Rez_tmp
	}
	#;
	q Rez
}

2. В Delphi:
Код: plaintext
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.
// Заполнить TStrings
function LoadSprToList(Strings: TStrings; ObjClass: Variant; GlobalName: string; PropertyDescriptIndex: Integer =  0 ): Integer;
var
 List, lst : Variant;
 i,n, id, RecCnt : Integer;
 descript : string;
begin
  Strings.Clear;
  //
  RecCnt :=  0 ;
  id :=  0 ;
  while (True) do
  begin
    List := ObjClass.LoadSpr(id,GlobalName,PropertyDescriptIndex);
    n := List.Count;
    if (n <=  0 ) then Break;
    //
    for i :=  1  to n do
    begin
      lst := List.ItemList[i];
      //
      id := lst.Item[ 1 ];
      descript := lst.Item[ 2 ];
      //
      Strings.AddObject(descript, Pointer(id));
      //
      Inc(RecCnt);
    end;
  end;
  //
  lst := Null;
  List := Null;
  //
  Result := RecCnt;
end;

Тогда в результате для добавления списка в ComboBox надо будет написать всего лишь следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
 objClass : Variant;
 GlobalName : string;
...
objClass := Factory.Static('TEST.Report'); // Factory - объект CacheObject.Factory (для Cache  5 . 0 ) или CacheActiveX.Factory (для Cache  5 . 1 +)
GlobalName := '^["NAMESPACE"]GLOBAL';
...
LoadSprToList(ComboBox.Items, objClass, GlobalName);
...
objClass := Null;
...
Рейтинг: 0 / 0
Помогите разобраться!!!!!
    #36298600
stroydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем кто помог разобраться.

вопрос решился следующим образом:

В Cache

Method GetGroups(IZ As %String) As %String
{
S I=""
S I=$O(^["NAMESPACE"]GLOBAL(IZ))
Q I
}

В Delphi

i:=1;iz:='1';
while iz<>'' do
begin
if i=1 then iz:='';
i:=i+1;
iz:=OBJ.GetGroups(iz);
str:=DosToWin(iz); // функция перевода козябры в человеческий язык
if iz <> '' then
ComboBox2.Items.Add(str);

И все, еще раз спасибо.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться!!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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