2012-11-12 23 views
-1

我想创建一个新的.txt文件,我从.script文件加载哪些参数。它在根中正常工作。 .script文件是在根directry.The结果是:FindFirst,FindNext,FindClose

  1. 192.121.2.2登录密码Lucey红
  2. 192.321.2.1登录密码史蒂夫苹果

if FindFirst('*.*', faAnyFile, Search) = 0 then 
    begin 
    while FindNext(Search) = 0 do 
    begin 
     if FileExists(Search.Name) then 
     begin 
     if pos('.txt', Search.Name) <> 0 then 
     begin 
      Assignfile(txtfile, Search.Name); 
      Erase(txtfile); 
     end; 
     end; 
    end; 
    end; 
    findclose(Search); 

    if FindFirst('*.*', faAnyFile, Search) = 0 then 
    begin 
    while FindNext(Search) = 0 do 
    begin 
     if FileExists(Search) then 
     begin 
     if pos('.script', Search.Name) <> 0 then 
     begin 
      data_file := TStringList.Create; 
      data_file.LoadFromFile(Search.Name); 
      txtdata := data_file.Strings[1].+ 'login' + data_file.Strings[2] + 
      'password' + data_file.Strings[3]; 
      txtfile := TStringList.Create; 
      if FileExists('.txt') then 
      begin 
      txtfile.LoadFromFile('.txt'); 
      end; 
      txtfile.Add(txtdata); 
      txtfile.SaveToFile('.txt'); 
     end; 
     end; 
    end; 
    end; 

    findclose(Search); 

但是,如果我想添加C:\ Script \ Files我使用的代码是错误的,这是什么问题?请帮忙!

if FindFirst('c:\Script\Files\*.*', faAnyFile, Search) = 0 then 
    begin 
    while FindNext(Search) = 0 do 
    begin 
     if FileExists(Search.Name) then 
     begin 
     if pos('c:\Script\Files\.txt', Search.Name) <> 0 then 
     begin 
      Assignfile(txtfile, Search.Name); 
      Erase(txtfile); 
     end; 
     end; 
    end; 
    end; 
    findclose(Search); 

    if FindFirst('*.*', faAnyFile, Search) = 0 then 
    begin 
    while FindNext(Search) = 0 do 
    begin 
     if FileExists(Search) then 
     begin 
     if pos('.script', Search.Name) <> 0 then 
     begin 
      data_file := TStringList.Create; 
      data_file.LoadFromFile(Search.Name); 
      txtdata := data_file.Strings[1] + 'login' + data_file.Strings[2] + 
      'password' + data_file.Strings[3]; 
      txtfile := TStringList.Create; 
      if FileExists('c:\Script\Files\.txt') then 
      begin 
      txtfile.LoadFromFile('c:\Script\Files\.txt'); 
      end; 
      txtfile.Add(txtdata); 
      txtfile.SaveToFile('c:\Script\Files\.txt'); 
     end; 
     end; 
    end; 
    end; 

    findclose(Search); 

结果是:

  1. 192.121.2.2登录密码Lucey红
  2. 192.121.2.2登录密码Lucey红
  3. 192.321.2.1登录密码史蒂夫苹果

第1项sh ows两次等。

+0

请正确缩进你的代码。快速浏览一下,这一行:'如果pos('c:\ Script \ Files \ .txt',..'需要更正。 –

+0

对不起,错误:) – Steve88

+1

我提到的声明仍然存在, t知道它是一个*复制/粘贴*错误,但是TSearchRec.Name将保存一个文件名,在其中找不到'c:\ Script \ Files \ .txt'。 –

回答

2

您的代码中存在相当多的逻辑错误。试试这个:

if FindFirst('c:\Script\Files\*.txt',faAnyFile,Search) = 0 then 
begin 
    repeat 
    DeleteFile('c:\Script\Files\' + Search.Name); 
    until FindNext(Search) <> 0; 
    FindClose(Search); 
end; 

txtfile := TStringList.Create; 
try 
    if FindFirst(PathToScriptFiles + '*.script',faAnyFile,Search) = 0 then 
    begin 
    repeat 
     data_file := TStringList.Create; 
     try 
     data_file.LoadFromFile(PathToScriptFiles + Search.Name); 
     txtdata := data_file.Strings[1] + ' login ' + data_file.Strings[2] + ' password ' + data_file.Strings[3]; 
     txtfile.Add(txtdata); 
     finally 
     data_file.Free; 
     end; 
    until FindNext(Search) <> 0; 
    FindClose(Search); 
    end; 
    txtfile.SaveToFile('c:\Script\Files\.txt'); 
finally 
    txtfile.Free; 
end; 
+0

抱歉,我错过了!我是“编程”世界的新手:)我将会为他们观看 – Steve88

相关问题