Sergey Philippov wrote:

Это не пользы ради, а исскуства для.
Напрягает писать минипарсер с учётом всяких кавычек и коментариев.

Не напрягайся особо:

procedure TibcCustomStatement.ParseSQL;

Ужос нах. Вот что я наваял тут по быстрому:

// param_names - имя параметров разделённых знаком ;
void extract_params(AnsiString &s)
{ param_names="";
  char *p=s.c_str();
  while(*p)
   switch(*p)
   { case ':': case '?':
        *p++='?'; while(__iscsym(*p)) {param_names+=*p; *p++=' ';}
         param_names+=';'; break;
     case '\'': case '\"':
        {char fin=*p;
         do{p++;} while(*p && *p!=fin);
         if(*p) p++;
         break;}
     case '/':
         if(*++p=='*')
         { do{p++;} while(p[0] && p[1] && !(p[0]=='*' && p[1]=='/'));
           if(p[0] && p[1]) p+=2;
         }
         break;
     default: p++;
   }
  param_names=param_names.UpperCase();
}

--
--- Home Page http://ok.novgorod.net/ap ---


Ответить