Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться!!!!! / 11 сообщений из 11, страница 1 из 1
21.10.2009, 10:17
    #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
21.10.2009, 10:34
    #36263559
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться!!!!!
stroydogЧто в коде в этом коде не так

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


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

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

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

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

Спасибо
...
Рейтинг: 0 / 0
21.10.2009, 11:47
    #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
21.10.2009, 11:48
    #36263804
stroydog
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться!!!!!
krvsa,

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

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

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

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

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

Возвращаются куда? Кодировка возможно разная... Т.ч. давай дольше информации по задаче...
...
Рейтинг: 0 / 0
21.10.2009, 12:28
    #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
21.10.2009, 13:11
    #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
21.10.2009, 18:24
    #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
09.11.2009, 13:22
    #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
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться!!!!! / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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