问题是:取出MYSQL的数据库名
我的方法是:
  WinExec('mysqlshow  > e:\tnes\bin\tnes_log_ss.txt',SW_hide);
  try
    loadstring:=Tstringlist.Create;
    while not FileExists('e:\tnes\bin\tnes_log_ss.txt') do;
    loadstring.LoadFromFile('e:\tnes\bin\tnes_log_ss.txt');
    showmessage(loadstring.txt);
  finally
    freeandnil(loadstring);
  end;   
可是输出的文件tnes_log_ss.txt为空,单独执行'mysqlshow  > e:\tnes\bin\tnes_log_ss.txt又没有任何问题,奇怪的是在屏幕显示瞬间看到他执行的是“mysqlshow 1> e:\tnes\bin\tnes_log_ss.txt”为什么,参数 /c /s都加过,没有用

解决方案 »

  1.   

    用sql语句show databases可以取得数据库列表
      

  2.   

    注意几个函数的参数形式!string 指向的内容是否正确!
      

  3.   

    这种方法不可取,DOS重定向不一定可以用
      

  4.   

    或者简单点,不要立即进行忙查询。在whilw前sleep一下,让系统在创建文件后有空向里面写数据。
      

  5.   

    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
        si : STARTUPINFO ;
        pi : PROCESS_INFORMATION;
    begin
        ZeroMemory(@si, sizeof(si));
        si.cb := sizeof(si);
        ZeroMemory(@pi, sizeof(pi));
        si.dwFlags := STARTF_USESHOWWINDOW;
        si.wShowWindow := SW_HIDE;
        if CreateProcess(nil, 'cmd.exe /k c:\a.bat', nil, nil, FALSE, 0, nil, nil, si, pi) then
        begin
            WaitForSingleObject( pi.hProcess, INFINITE );
            CloseHandle( pi.hProcess );
            CloseHandle( pi.hThread );
        end;
        Memo1.Lines.LoadFromFile('e:\tnes\bin\tnes_log_ss.txt');
    end;建一个c:\a.bat内空
    mysqlshow  > e:\tnes\bin\tnes_log_ss.txt
    exit
      

  6.   

    还有一点比较好的方法就是firetoucher(风焱)兄 说的管道,