2013-04-03 15 views
8

Şu anda çalışan MLM adını, en baştan kullanıcı adı olmadan nasıl edinebilirim? Özel anahtar kelime THIS_MLM_NAME, MLM'nin adını USERNAME-302364198::MLM_NAME_HERE biçiminde döndürür, ancak MLM'nin adını tek başına istiyorum. Şu an çalışan MLM adını Arden uygula

Ben SUBSTRING kullanarak çalıştı:

SUBSTRING 200 CHARACTERS 
STARTING AT ((FIND "::" IN THIS_MLM_NAME) + 2) 
FROM THIS_MLM_NAME; 

Ama bu sadece null döndürür. Neyi yanlış yapıyorum?

cevap

4

Sorun şu ki, THIS_MLM_NAME aslında bir Arden dizesi değil. Eğer THIS_MLM_NAME IS STRING test ederseniz, yanlış olacaktır. Bu durumu düzeltmek için THIS_MLM_NAME AS STRING bir dizeye dönüştürmek:

ThisMLMName := SUBSTRING 200 CHARACTERS 
    STARTING AT ((FIND "::" IN STRING (THIS_MLM_NAME AS String)) + 2) 
    FROM (THIS_MLM_NAME AS String); 

Arden Sunrise Akut Care 'uygulamasında hiçbir ayıklayıcı olmadığı için, ben (değişkenlerle ilgili bilgileri gösteren modülü MOD_VARIABLE_INFO veya değişikliği seçmemize yardımcı olmak için aşağıdaki MLM yazdı kodu) gerçek adı eşleştirmek için:

// data slot 
(Variable, Padding) := ARGUMENT; 
Result := ""; 
IF NOT EXIST Padding THEN 
    Padding := ""; 
ENDIF; 
CR := (13 FORMATTED WITH "%c") || Padding; 
Delimiter := ""; 
MOD_VARIABLE_INFO := MLM 'MOD_VARIABLE_INFO'; 
IF Variable IS LIST THEN 
    Result := Result || "List(" || (COUNT Variable) || ") [" || CR || " "; 
    FOR Item IN Variable DO 
     Result := Result || Delimiter; 
     TempResult := CALL MOD_VARIABLE_INFO WITH Item, Padding || " "; 
     Result := Result || TempResult; 
     Delimiter := "," || CR || " "; 
    ENDDO; 
    Result := Result || CR || "]"; 
ELSEIF Variable IS STRING THEN 
    Result := Result || "String"; 
ELSEIF Variable IS NUMBER THEN 
    Result := Result || "Number"; 
ELSEIF Variable IS BOOLEAN THEN 
    Result := Result || "Boolean"; 
ELSEIF Variable IS NET_OBJECT THEN 
    Result := Result || ".Net Object"; 
ELSEIF Variable IS NULL THEN 
    Result := Result || "Null"; 
ELSEIF Variable IS OBJECT THEN 
    Result := Result || "Object {" || CR || " "; 
    FOR Attr IN (EXTRACT ATTRIBUTE NAMES Variable) DO 
     Result := Result || Delimiter || Attr || ": "; 
     Item := ATTRIBUTE Attr FROM Variable; 
     TempResult := CALL MOD_VARIABLE_INFO WITH Item, Padding || " "; 
     Result := Result || TempResult; 
     Delimiter := "," || CR || " "; 
    ENDDO; 
    Result := Result || CR || "}"; 
ELSE 
    Result := Result || "Unknown (" || Variable || ")"; 
ENDIF; 
// logic slot 
CONCLUDE True; 
// action slot 
RETURN Result; 

bu MLM THIS_MLM_NAME için "Bilinmeyen" döndürür iken

, en azından o yerli Arden veri türlerinin herhangi olmadığı gibi bir .Net veri türü olduğunu göstermektedir.

Sunrise MLM Düzenleyicisi'nde, MLM'yi kontrol eden sözdizimi, ardından "Sözdizimi Kontrolü MLM" sekmesini tıklatarak, "İşlev Tanımı" nı seçerek ve sonra da sağ alt bölme. THIS_MLM_NAME'u arayın ve (SETQ THIS_MLM_NAME 'USERNAME-302364198::MLM_NAME)'u bulacaksınız. Buradan, değişkenin (SETQ THIS_MLM_NAME "USERNAME-302364198::MLM_NAME") gibi görünecek bir dize yerine düz bir alıntı/derecelendirilmemiş lisp ifadesine ayarlandığını görebilirsiniz.

İlgili konular