PASCAL:通过数组循环创建文件夹?

时间:2013-10-14 13:46:16

标签: arrays delphi loops pascal

所以我创建了一个pascal脚本,它将在主目录中创建一个目录,并且还在该新目录中创建多个文件夹。 (插入XZibit双关语)

现在我们在工作的地方这样做,我们将这些变量发送到一个exe,然后根据传递的内容创建目录(在这种情况下,路径'fullpath')。

我不确定我是否正确接近这一点,并且会喜欢更为突出的PASCAL大师的输入:)

const
ARRAY1: Array[1..9] of String = (
     'NQN', 'Documents', 'Correspondences',
     'Worksheets', 'Reports', 'Claims',
     'Certificate of Insurance', 'Invoice', 'Monthly Reports'
);
var
i: Integer;
fullpath, path, name, os, es, cmd: String;
Code : LongWord;
res: Integer;

Begin
path := 'Policies'
fullpath := path+'\'+[i]
     for i := 1 to 9 do
    IF(ReqList.Values['sRM_ID'] = '') then
        Begin
            cmd := 'C:\XXX\bin\mkdir.exe "'+fullpath+'"';
            res :=ExecuteProc(cmd, 'C:\XXX\bin', true, -1, true, nil, os, es, code);
            if(res = 0) then
                Begin
                    ReqList.values['NoErrors'] := '1';
                    ReqList.Values['Response_content']:=  '{"valid":"1","message":"'+ReplaceString(ReplaceString(os,#13,'',false),#10,'',false)+'"}';
                end
            else
                begin
                    ReqList.Values['NoErrors'] := '0';
                    Reqlist.Values['Response_Content'] := '{"valid":"0","message":"'+ReplaceString(ReplaceString(os,#13,'',false),#10,'',false)+'"}';
                end;
        END
        ELSE
                Begin
                    ReqList.Values['Response_Content'] := '{"valid":"0","message":"A folder or file with the same name already exists."}';
                End;
                    ReqList.Values['Response_ContentType'] := 'HTML';

1 个答案:

答案 0 :(得分:5)

一旦确定了数组中每个条目的绝对路径,ForceDirectories就会创建它们(如果它们尚不存在),正如上面提到的bummi所述。

假设您的根路径是相对于当前可执行路径的,它可以像这样简单:

const
  ARRAY1: Array [1 .. 9] of String = ('NQN', 'Documents', 'Correspondences',
    'Worksheets', 'Reports', 'Claims', 'Certificate of Insurance', 'Invoice',
    'Monthly Reports');
var
  s: string;
  path: string;
  fullpath: string;
begin
  path := 'Policies';
  for s in ARRAY1 do
  begin
    fullpath := ExpandFileName(IncludeTrailingPathDelimiter(path) + s);
    ForceDirectories(fullpath);
  end;
end;