Może ktoś to poprawi i napisze z tego słuszny program? Nie mam ostatnio czasu, wiecie, szkoła, więc naskrobałem kod, który działa. Jest nieczytelny, warunki postawione są zapewne z błędami (chociażby istnienie jakiegokolwiek parametru spowodowałoby potraktowanie go jak ścieżki i przejście dalej), a program był pisany po nocy przed kompem, więc nie dziwcie się, jak zobaczycie jakieś głupoty. Testowałem i działał :). Nie narzekajcie na zmienną Co, miała zostac użyta (po jej roli jako kod błędów i wyzerowaniu) jako licznik usuniec, ale nie napisałem tego w końcu.
program Kasownik;
{MCbx 2007; 3.01.2007, 3:25 rano}
{Jeszcze raz przepraszam za zabaloaganiony kod!}
USES Crt, DOS;
var Katalog,nazwa:string;
M,D,Y,Co:integer;
DT:DateTime;
fajl:text;
Infoz:SearchRec;
BEGIN
IF ParamStr(1)='' THEN begin {Brak parametru}
clrScr;
Writeln ('Uzywaj tak: Program.exe [katalog] [dzien] [miesiac] [rok]');
HALT;
end
ELSE BEGIN
ClrScr;
writeln('Program wykonuje sie. Nie mialem czasu na napisanie textow');
Katalog:=ParamStr(1);
Val(ParamStr(2), D, Co);
Val(ParamStr(3), M, Co);
Val(ParamStr(4), Y, Co);
Co:=0;
FindFirst(Katalog+'\*.*',$3F,infoz);
{Poradzilismy sobie ze znajdowaniem. Nasze wyniki siedza w INFOZ. To rekordowiec, mamy go rozpruc}
{przy uzyciu petli, ktora bedzie trwac dopoki DOs nie dostanie szajby}
WHILE DosError=0 DO
Begin
If (infoz.name<>'.') AND (Infoz.name<>'..') then begin
Assign (fajl,Katalog+'\'+Infoz.Name);
{$I-}
Reset(fajl);
if IOResult=0 THEN begin
{$I+}
UnpackTime(infoz.time,DT);
WITH DT DO
BEGIN
if year if (year=y) AND (month if (year=y) AND (month=M) AND (day END;
Close(fajl);
END; {Sprawdzanie IOResulta}
end; {warunek if infoz.name<>..}
FindNext(INFOZ);
END; {Petla glowna}
END; {Ten END jest od tego do parametru z linii 22}
Writeln('Koniec programu');
END.