home *** CD-ROM | disk | FTP | other *** search
- {$M 5520,2000,10000}
- {{$define test}
- program initenv;
-
- uses
- fdisks,uupcase,autodel,uenv,uexist,upath;
-
- var
- s,s1 : string;
- l : byte absolute s;
- b : byte;
- fn : string[80];
- vn : string;
- f : text;
- st,st1,enverr,st2 : boolean;
- ch : char;
- disk : byte;
-
- begin
- if paramcount>0 then fn:=paramstr(1)
- else begin
- b:=length(fn);
- fn:=getpathname(envname)+'initenv.par';
- if not exist(fn,existfile) then begin
- delete(fn,3,b-2);
- if not exist(fn,existfile) then fn:='c:\initenv.par';
- end;
- end;
- if (fn='?') or not exist(fn,existfile) then begin
- writeln('----------------------------');
- writeln('INITENV Version 1.1');
- writeln('Copywrigth Dieter Ferdinand');
- writeln('----------------------------');
- writeln('Wird in der Kommandozeile kein Parameterfile angebeben, dann wird');
- writeln('automatisch nach einer Datei INITENV.PAR gesucht. Zuerst wird im');
- writeln('Verzeichnis nachgesehen, in dem sich das Programm befindet, danach');
- writeln('im Hauptverzeichnis des Laufwerks, auf dem sich das Programm befindet');
- writeln('und zuletzt im Hauptverzeichnis von Laufwerk C:.');
- writeln('Aufbau der Parameter-Datei:');
- writeln(';text Komentar');
- writeln('variable=daten feste Zuweisung');
- writeln('variable=$laufwerk:path\filename path wird zugewiesen, wenn die Datei');
- writeln(' existiert.');
- writeln('variable=*path\filename alle vorhanden Festplatten werden durchsucht');
- writeln(' wird das file gefunden, wird der Path');
- writeln(' zugewiesen.');
- writeln('variable=?path\filename alle vorhanden Festplatten werden durchsucht');
- writeln(' wird das File gefunden, wird der Path');
- writeln(' mit dem Filenamen zugewiesen.');
- writeln('variable=!path alle vorhanden Festplatten werden durchsucht');
- writeln(' wird das Directory gefunden, wird der Path');
- writeln(' zugewiesen.');
- writeln('variable=|label alle vorhanden Festplatten werden nach dem');
- writeln(' Label durchsucht, eine Liste mit allen');
- writeln(' Laufwerken bis zum auffinden des Labels');
- writeln(' wird der VARIABLEN zugewiesen. Die Liste');
- writeln(' hat die Form C,D,..,Z. Dadurch kann sie');
- writeln(' beim FOR-Befehl als Liste verwendet werden.');
- writeln('variable=|!label wie |label, allerdings wird nur das Laufwerk');
- writeln(' zugewiesen.');
- writeln('variable=|*filename wie bei |label, allerdings wird nach einem');
- writeln(' File gesucht.');
- writeln('variable=|$ wie bei |label, allerdings werden alle');
- writeln(' anprechbaren Festplatten eingetragen.');
- writeln('variable=%variable Variable kopieren');
- writeln('variable=%variable%text Variablen mit Konstanten verknüpfen');
- writeln(' Soll als erstes ein Text stehen,');
- writeln(' dann %% an den Anfang setzen.');
- writeln;
- writeln('Ist das 1. Zeichen einer Zeile ein ";", dann wird diese Zeile nicht');
- writeln('bearbeitet.');
- writeln('Bei den Funktionen, bei denen kein Filename gespeichert wird, dürfen');
- writeln('auch * und ? im Filenamen verwendet werden.');
- writeln('Die Suchfunktionen werden abgebrochen, sobald etwas passendes gefunden');
- writeln('wurde.');
- writeln('Variablen, die bereits existieren werden nicht verändert.');
- writeln('Die zur Steuerung benutzten Zeichen können nicht zugewiesen werden.');
- end
- else begin
- assign(f,fn);
- filemode:=0;
- reset(f);
- writeln('Initialisiere Variablen:');
- while not eof(f) do begin
- readln(f,s);
- writeln(s);
- b:=l;
- if b>0 then b:=pos('=',s);
- if (l>0) and (s[1]<>';') then if b>0 then begin
- vn:=copy(s,1,pred(b));
- {$ifndef test}
- if (gethauptenv(vn)='') then
- {$endif}
- if l>0 then begin
- delete(s,1,b);
- enverr:=true;
- case s[1] of
- '$' : if exist(s,existfile) then begin
- s:=getpathname(s);
- if l>0 then dec(s[0]);
- {$ifndef test}
- enverr:=sethauptenv(vn+'='+s);
- {$endif}
- end;
- '%' : begin
- s1:='';
- st:=true;
- delete(s,1,1);
- repeat
- b:=pos('%',s);
- if (b=0) then begin
- if st then s1:=s1+gethauptenv(s) else s1:=s1+s;
- s:='';
- end
- else begin
- if st then s1:=s1+gethauptenv(copy(s,1,pred(b)))
- else s1:=s1+copy(s,1,pred(b));
- delete(s,1,b);
- st:=not st;
- end;
- until s='';
- vn:=upcasestr(vn);
- if vn='PATH' then begin
- repeat
- b:=pos(';;',s1);
- if b>0 then delete(s1,b,1)
- else begin
- b:=pos(';\;',s1);
- if b>0 then delete(s1,b,2)
- else begin
- b:=pos('=\;',s1);
- if b>0 then delete(s1,succ(b),2)
- else begin
- b:=pos(';\',s1);
- if b>0 then delete(s1,b,2)
- else begin
- b:=ord((s1[0]>#0) and (s1[1]=';'));
- if b=0 then b:=ord(s1[0])*ord((s1[0]>#0) and (s1[ord(s1[0])]=';'));
- if b>0 then delete(s1,b,1)
- else begin
- b:=ord((s1[0]>#0) and (s1[1]='\'));
- if b>0 then delete(s1,b,1);
- end;
- end;
- end;
- end;
- end;
- until b=0;
- end;
- {$ifndef test}
- enverr:=sethauptenv(vn+'='+s1);
- {$endif}
- end;
- '|' : begin
- delete(s,1,1);
- b:=pos(':',s);
- if b>0 then delete(s,1,b);
- if l>0 then begin
- st1:=s[1]='*';
- st2:=s[1]='!';
- if st1 or st2 then delete(s,1,1);
- fn:='B:'+s;
- l:=0;
- st:=fn[0]>#2;
- s:='';
- disk:=0;
- if st then if s[1]='$' then for disk:=1 to lastdisk do begin
- fn[1]:=disks[disk];
- s:=s+fn[1];
- if (l>0) and (lastdisk<>disk) then s:=s+',';
- end
- else if lastdisk>0 then repeat
- inc(disk);
- fn[1]:=disks[disk];
- if l>0 then s:=s+',';
- s:=s+fn[1];
- if st1 then st:=exist(fn,existfile)
- else st:=exist(fn,existlabel);
- until (lastdisk=disk) or st;
- if st then begin
- if st2 then begin
- delete(s,1,pred(l));
- s:=s+':';
- end;
- {$ifndef test}
- enverr:=sethauptenv(vn+'='+s);
- {$endif}
- end;
- end;
- end;
- '*' : begin
- delete(s,1,1);
- b:=pos(':',s);
- if b>0 then delete(s,1,b);
- if (l>0) and (lastdisk>0) then begin
- fn:='B:'+s;
- disk:=0;
- repeat
- inc(disk);
- fn[1]:=disks[disk];
- st:=exist(fn,existfile);
- until (lastdisk=disk) or st;
- if st then begin
- fn:=getpathname(fn);
- dec(fn[0]);
- {$ifndef test}
- enverr:=sethauptenv(vn+'='+fn);
- {$endif}
- end;
- end;
- end;
- '!' : begin
- delete(s,1,1);
- b:=pos(':',s);
- if b>0 then delete(s,1,b);
- if (l>0) and (lastdisk>0) then begin
- fn:='B:'+s;
- disk:=0;
- repeat
- inc(disk);
- fn[1]:=disks[disk];
- st:=exist(fn,existdir);
- until (lastdisk=disk) or st;
- if st then begin
- {$ifndef test}
- enverr:=sethauptenv(vn+'='+fn);
- {$endif}
- end;
- end;
- end;
- '?' : begin
- delete(s,1,1);
- b:=pos(':',s);
- if b>0 then delete(s,1,b);
- if (l>0) and (lastdisk>0) then begin
- fn:='B:'+s;
- disk:=0;
- repeat
- inc(disk);
- fn[1]:=disks[disk];
- st:=exist(fn,existfile);
- until (lastdisk=disk) or st;
- {$ifndef test}
- if st then enverr:=sethauptenv(vn+'='+fn);
- {$endif}
- end;
- end;
- {$ifndef test}
- else enverr:=sethauptenv(vn+'='+s);
- {$endif}
- end;
- enverr:=not enverr;
- if enverr then writeln('Variable ',vn,' konnte nicht gesetzt werden!');
- end
- else writeln('Kein Befehl in der Befehlszeile gefunden');
- (*{$ifndef test}
- else writeln('Variable ',vn,' existiert bereits!');
- {$endif}*)
- end
- else writeln('Kein Variablenname in der Befehlszeile gefunden!');
- end;
- writeln('Ende der Initialisierung.');
- close(f);
- writeln;
- end;
- end.
-