Contributor: J.P KARRELL 
{
>Can anyone give me an idea of how to use a config file in my programs.
>Such as an easy one, I am writing a program for my BBS in which this
>program will Copy files to another directory. I know I could put the
>directory from and to in the code itself, but what I want to accomplish
>is to use a Configuration file to read the from directory and to
>directory. This is so the program can be used anywhere. Can someone
>please help me with this?
I posted a unit I wrote a day or so ago which can be modified to do this.
Here it is again (extensively modified to support an ASCII configuration
file):
Notes: Change the CFGKEYS constants to the keywords you want your program
to recognize (remember to change the CONFIGOPTIONS constant also).
}
Unit CFG_DEF;
Interface uses Dos; { Dos unit is needed for FindFirst }
Const
CONFIGFILE = 'YOURFILE.CFG';
CONFIGOPTIONS = 5;
CFGKEYS : array[1..CONFIGOPTIONS] of string = ('YOUR',
 'CONFIG',
 'OPTIONS',
 'GO',
 'HERE');
Procedure Read_Cfg_File;
Implementation {----------------------------------------------}
Function Findfile(searchkey : string) : boolean;
 var srec : searchrec;
begin
 findfirst(searchkey,anyfile, srec);
 FindFile := (doserror = 0);
end;
Function Uppercase(st : string) : string;
 var loop : byte;
begin
 for loop := 1 to length(st) do st[loop] := upcase(st[loop]);
 uppercase := st;
end;
Procedure Read_Cfg_File;
 var f :text; i, j, loop : byte; line, key, command : string;
 Result_Table : array[1..CONFIGOPTIONS] of boolean;
begin
fillchar(Result_Table,sizeof(Result_Table),false);
command := #0;
line := #0;
key := #0;
{$I-}
assign(f,CONFIGFILE);
reset(f);
{$I+}
{CheckError(IOResult,CFGFILE); <--- Add your own error checking here as my CheckError procedure is not included in this snippet. } while not EOF(f) do begin {while} readln(f,line); if (copy(line,1,1)  #59) and
 (copy(line,1,1)  #32) then begin { ignore lines preceeded with a
 comment delimiter - usually #59
 (IE: ';')}
 j := pos(#32,line);
 if j = 0 then j := length(line)+1;
 key := copy(line,1,j-1);
 delete(line,1,j);
 i := pos(#59,line);
 if i = 0 then i := length(line)+1;
 command := copy(line,1,i-1);
 i := pos(#32,command);
 if i  0 then delete(command,i,length(command)-(i-1));
 for loop := 1 to CONFIGOPTIONS do begin {loop}
 if Uppercase(key) = CFGKEYS[loop] then begin {if}
 Result_Table[loop] := true;
 case loop of {case}
 1 : begin
 end;
 2 : begin
 end;
 3 : begin
 end;
 4 : begin
 end;
 5 : begin
 end;
 end; {case}
 end; {if}
 end; {loop}
 end; {if}
 end; {while}
close(f);
end; {proc}
end. {unit}
 

AltStyle によって変換されたページ (->オリジナル) /