Newsgroup: it.comp.lang.javascript
Titolo: [VBS] Utilizzare le variant in javascript

Mi trovo nella condizione di dover utilizzare un ActiveX sotto VBScript in
una pagina HTML. Tuttavia, il codice del sito è tutto in javascript. Come
posso accedere alla variant di VBS, senza ricorrere al trucco infame di
nominare N variabili:
<SCRIPT LANGUAGE="VBScript">
<!--
'CUT
   archiveLen = 0
   For Each item In ctrlPanelFiles
      If InStr(item, ".htm") Then
  Execute "Dim files" & archiveLen & " : files" & archiveLen & " = """ &
item & """"
  archiveLen = archiveLen + 1
      End If
   Next
'-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
   var files = new Array();
   for (var i = 0; i < archiveLen; i++)
      eval('files[archiveLen - i - 1] = files' + i);
//-->
</SCRIPT>
P.S. rieccomi dopo tempo... problemi di provider :D
~~
artemis.alpeia

 nominare N variabili:
Che cosa e' esattamente ctrlPanelFiles? Un oggetto? Un SafeArray restituito
dal controllo ActiveX?
In questo ultimo caso la questione dovrebbe essere semplice.
Se x e' il SafeArray restituito ti basta var arrVB= new VBArray(x);
L'oggetto ha qualche metodo che ti permette di manipolarlo e puoi comunque
convertirlo in un array JScript con il metodo toArray().
Occhio che l'array js diventa ad un unica dimensione (e neache ricostruito
come array di array).
Se non e' questo il caso avrei bisogno di piu' informazioni.

 P.S. rieccomi dopo tempo... problemi di provider :D
Bentornato ^_^
--------------------------------
Inviato via 
http://usenet.libero.it


~~
artemis.alpeia

 Bentornato ^_^
grazie :)
~~
artemis.alpeia

    Set ctrlPanelFiles =
fSO.GetFolder(fSO.GetAbsolutePathName(FOLDER)).Files
No. Ferma tutto.
Questa e' una normale collection che puoi trattare in js (perche'
VBScript?).
Guarda, come ti ha detto Zer0 l'oggetto Enumerator (che e' JScript!) e
risolvi tutti i tuoi problemi.
Ciao

 sorry, conosco poco VBScript e ancora meno VB
E' JScript (di M$), non VBS, cmq :)
Ti copio paro paro l'esempio della documentazione:
function ShowDriveList(){
   var fso, s, n, e, x;                     //Declare variables.
   fso = new ActiveXObject("Scripting.FileSystemObject");
   e = new Enumerator(fso.Drives);          //Create Enumerator on 
Drives.
   s = "";
   for (;!e.atEnd();e.moveNext())           //Enumerate drives 
collection.
      {
         x = e.item();
         s = s + x.DriveLetter;
         s += " - ";
         if (x.DriveType == 3)              //See if network drive.
            n = x.ShareName;                //Get share name
         else if (x.IsReady)                //See if drive is ready.
            n = x.VolumeName;               //Get volume name.
         else
            n = "[Drive not ready]";
         s +=  n + "<br>";
      }
   return(s);                               //Return active drive list.
}
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 VBScript?).
Non in JS. In JScript. E le "Collection" non sono propriamente 
"normali", visto che per iterarle si necessita dell'Enumerator. :/
Inoltre si capiva dal suo script che "tipo" di oggetto era, visto che ha 
usato il "For Each" :)


 usato il "For Each" :)
ok, ho imparato qualcosa anche oggi
grazie a tutti e a te per lo scriptlet dell'altro msg
~~
artemis.alpeia