Index: trunk/SophyaLib/TArray/basarr.h
===================================================================
--- trunk/SophyaLib/TArray/basarr.h	(revision 2284)
+++ trunk/SophyaLib/TArray/basarr.h	(revision 2286)
@@ -154,5 +154,6 @@
   // Lecture,Ecriture sur fichier ASCII
   //! Reads an array from an ASCII stream
-  virtual sa_size_t ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc) = 0;
+  virtual sa_size_t ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc,
+			      char clm='#', const char* sep=" \t") = 0;
   //! Writes an array to an ASCII stream
   virtual void   WriteASCII(ostream& os) const = 0;
Index: trunk/SophyaLib/TArray/tarray.cc
===================================================================
--- trunk/SophyaLib/TArray/tarray.cc	(revision 2284)
+++ trunk/SophyaLib/TArray/tarray.cc	(revision 2286)
@@ -1089,11 +1089,14 @@
   \param nr : Number of non empty (or comment) lines in stream (return value)
   \param nc : Number of columns (= ntot/nlines) (return value)
+  \param clm : Lines starting with clm character are treated as comment lines
+  \param sep : word separator in lines
   \return Number of decoded elements
- */
-template <class T>
-sa_size_t TArray<T>::ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc)
+*/
+template <class T>
+sa_size_t TArray<T>::ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc,
+			       char clm, const char* sep)
 {
   EnumeratedSequence es;
-  sa_size_t n = es.FillFromFile(is, nr, nc);
+  sa_size_t n = es.FillFromFile(is, nr, nc, clm, sep);
   if ( (n < 1) || (nr < 1) || (nc < 1) ) return(n); 
   if (!IsAllocated()) {
Index: trunk/SophyaLib/TArray/tarray.h
===================================================================
--- trunk/SophyaLib/TArray/tarray.h	(revision 2284)
+++ trunk/SophyaLib/TArray/tarray.h	(revision 2286)
@@ -175,5 +175,6 @@
 
 // Lecture,Ecriture sur fichier ASCII
-  virtual sa_size_t ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc);
+  virtual sa_size_t ReadASCII(istream& is, sa_size_t & nr, sa_size_t & nc,
+			      char clm='#', const char* sep=" \t");
   virtual void   WriteASCII(ostream& os) const;
 
Index: trunk/SophyaLib/TArray/utilarr.cc
===================================================================
--- trunk/SophyaLib/TArray/utilarr.cc	(revision 2284)
+++ trunk/SophyaLib/TArray/utilarr.cc	(revision 2286)
@@ -195,8 +195,9 @@
 /*!
   \param str : string to be decoded
-  \param nbad : number of unmatched quotes or parenthesis
+  \param nbad : number of unmatched quotes or parenthesis (returned value)
+  \param sep : word separator in string. Each word is decoded as a MuTyV value.
   \return the number of added elements.
 */ 
-sa_size_t EnumeratedSequence::Append(string const & str, int& nbad)
+sa_size_t EnumeratedSequence::Append(string const & str, int& nbad, const char* sep)
 {
   nbad = 0;
@@ -204,7 +205,9 @@
   size_t l = str.length();
   if (l < 1) return(0);
-  if ((str[0] == '#') || (str[0] == '*')) return(0);
+  //  if ((str[0] == '#') || (str[0] == '*')) return(0);
   size_t q = 0;
-  size_t p = str.find_first_not_of(" \t");
+  size_t p = 0;
+  /*
+  size_t p = str.find_first_not_of(sep);
   if ((str[p] == '+') || (str[p] == '-')) {
     if (p == l-1)  return(0);
@@ -212,7 +215,7 @@
   }
   else if (!isdigit(str[p]) && (str[p] != '\'') && (str[p] != '(') ) return(0);
-
+  */
   while(q < l) {
-    p = str.find_first_not_of(" \t",q);
+    p = str.find_first_not_of(sep,q);
     if (p >= l)  break;
     if (str[p] == '\'')    {  // Decodage d'un string
@@ -236,7 +239,7 @@
     }
     else { 
-      q = str.find_first_of(" \t",p);
+      q = str.find_first_of(sep,p);
       if (!isdigit(str[p]) && !(str[p] == '+') && !(str[p] == '-') ) { // une chaine
-	continue;
+	vecv_.push_back(MuTyV(str.substr(p,q-p)));
       }
       else {  // C'est un nombre 
@@ -260,8 +263,10 @@
     \param nr : Number of non empty (or comment) lines in stream (return value)
     \param nc : Number of columns (= ntot/nlines) (return value)
+    \param clm : Lines starting with clm character are treated as comment lines
+    \param sep : word separator in lines
     \return Number of decoded elements
 */
-sa_size_t EnumeratedSequence::FillFromFile(istream& is, 
-					   sa_size_t& nr, sa_size_t& nc)
+sa_size_t EnumeratedSequence::FillFromFile(istream& is, sa_size_t& nr, sa_size_t& nc,
+					   char clm, const char* sep)
 {
   nr = 0;
@@ -278,16 +283,18 @@
     line += buff;
     if (is.good()) {
-      nel = Append(line, nbad);
-      //      cout << " Decoding line = " << line << " Nel= " << nel << endl;
-      if (nel > 0)  { 
-	nr++;  n += nel;
-      }
-      nbadtot += nbad;
+      if ((line.length() > 0) && (line[0]!=clm)) {
+	nel = Append(line, nbad);
+	if (nel > 0)  { 
+	  nr++;  n += nel;
+	}
+	nbadtot += nbad;
+      }
+	      cout << " Decoding line = " << line << " Nel= " << nel << endl;
       line = "";
     }
   }
-  if (line.length() > 0) {
+  if ((line.length() > 0) && (line[0]!=clm)) {
     nel = Append(line, nbad);
-    //    cout << " Decoding Eline = " << line << " Nel= " << nel << endl;
+        cout << " Decoding Eline = " << line << " Nel= " << nel << endl;
     if (nel > 0)  { 
       nr++;  n += nel;
Index: trunk/SophyaLib/TArray/utilarr.h
===================================================================
--- trunk/SophyaLib/TArray/utilarr.h	(revision 2284)
+++ trunk/SophyaLib/TArray/utilarr.h	(revision 2286)
@@ -109,6 +109,7 @@
 
   sa_size_t            Append(EnumeratedSequence const & seq);
-  sa_size_t            Append(string const & str, int & nbad);
-  sa_size_t            FillFromFile(istream& is, sa_size_t& nr, sa_size_t& nc);
+  sa_size_t            Append(string const & str, int & nbad, const char* sep=" \t");
+  sa_size_t            FillFromFile(istream& is, sa_size_t& nr, sa_size_t& nc, 
+				    char clm='#', const char* sep=" \t");
 
 private:
