home *** CD-ROM | disk | FTP | other *** search
- {
- >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}