PROGRAM Dir_Demo(INPUT,OUTPUT); { Erzeugung eines Directories nach Eingabe der Maske unter } { Beruecksichtigung der jeweiligen Bildschirmbreite } CONST spalten = 80; { Bildschirmbreite = 80 Spalten } TYPE longword = STRING[255]; shortword = STRING[11]; VAR eingabe : longword; filename : shortword; i,z,a,n : INTEGER; FCB : shortword ABSOLUTE $5c;{ File Control Block } DMA : STRING[128]; FUNCTION gross(w:longword):longword; { Umwandlung aller Buchstaben eines Wortes in Grossbuchst. } VAR i : BYTE; BEGIN FOR i:=1 TO LENGTH(w) DO w[i]:=UPCASE(w[i]); gross:=w END; FUNCTION wildcard(x: longword): shortword; { Der Filenane wird so aufbereitet, so dass er In den FCB } { geschrieben werden kann. Wildcards ('*') werden berueck- } { sichtigt. } VAR laenge,punkt,Stern : BYTE; filename : STRING[8]; ext : STRING[3]; BEGIN filename:=''; ext:=' '; laenge:=LENGTH(x); punkt:=POS('.',x); { Pos. d. Punktes in Filenamen } IF (punkt=0) AND (laenge>8) THEN laenge:=8 ELSE BEGIN ext:=COPY(x,punkt+1,3)+' '; IF punkt>9 THEN laenge:=8 ELSE laenge:=punkt-1; stern:=POS('*',ext); IF stern<>0 THEN ext:=COPY(ext,1,stern-1)+'???'; END; Stern:=POS('*',x); IF stern<>0 THEN filename:=COPY(x,1,stern-1)+'????????' ELSE filename:=COPY(x,1,laenge)+' '; wildcard:=filename+ext; END; BEGIN WRITE('Maske : '); { Maske fuer das Directory } READLN(eingabe); filename:=wildcard(gross(eingabe)); CLRSCR; GOTOXY(15,3); WRITELN('DIRECTORY'); z:=0; FCB:=filename; { Filename in den File-Control-Block } mem[$5c]:=0; bdos(26,addr(DMA)); { DMA-Adresse festlegen } a:=bdos(17,$5C); { Suche nach dem ersten Namen } WHILE a<255 DO BEGIN a:=a*32+1; n:=spalten DIV 14; GOTOXY((z MOD n)*14+2,(z DIV n)+5); z:=z+1; filename:='' ; FOR i:=0 TO 10 DO filename:=filename+DMA[a+i]; WRITE(COPY(filename,1,8),'.',COPY(filename,9,3)); a:=bdos(18,$5C); { Suche nach den naechsten Eintrag } END; WRITELN; END.