[Back to DOS SWAG index] [Back to Main SWAG index] [Original]

    {
      OK, here's a problem. FExpand takes Newest.Name and appends it to the
      full CURRENT path, not the path you specified on the command line. You
      have to keep track of that path yourself. Or, here's a unit that might
      help. It's an Expanded Searchrec that returns a full filespec.
    }

    unit EXSRec;
    { Written by Steve Rogers - 1994. Released to public domain }

    interface
    uses
      dos;

    type
      EXSearchRec = record           { EXtended searchrec       }
        name : pathstr;              { fully specified filename }
        dsub : searchrec;            { dos.searchrec            }
      end;

    procedure ffirst(path : pathstr;attr : word;var dd : EXSearchRec);
    procedure fnext(var dd : EXSearchRec);

    implementation

    procedure ffirst(path : pathstr;attr : word;var dd : EXSearchRec);
    begin
      findfirst(path,attr,dd.dsub);
      if (doserror=0) then with dd do begin
        name:= path;
        while not (name[length(name)] in ['\',':',#0])
          do dec(name[0]);
        name:= name+dsub.name;
      end else dd.name:= '';
    end;

    {----------------------}
    procedure fnext(var dd : EXSearchRec);

    begin
      findnext(dd.dsub);
      if (doserror=0) then with dd do begin
        while not (dd.name[length(dd.name)] in ['\',':',#0])
          do dec(name[0]);
        name:= name+dsub.name;
      end else dd.name:= '';
    end;

    {----------------------}
    end.

[Back to DOS SWAG index] [Back to Main SWAG index] [Original]