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 ---