|
|
Mennyi idő alatt fejlesztünk ki egy-egy alkalmazást?
|
|
Példaprogram letöltése
7823 bájt
|
Az idei év 8. számában készítettünk egy olyan Delphi kiegészítést, ami számolta, hogy az éppen szerkesztett project-et hányszor nyitottunk már meg. Most ezt egy kicsit továbbfejlesztettük úgy, hogy azt az időt is méri, ameddig a project nyitva van. Ezzel lehetőségünk van megnézni, hogy egy adott project-tel összesen mennyi ideig foglalkoztunk az elkezdésétől a befejezéséig.
Ez a cikk úgy készült, hogy feltételezzük "Delphi továbbfejlesztése: project megnyitások számlálása" című cikk ismeretét, ezért csak a különbségekkel foglalkozunk.
A project lefordítása után a ProjectCounter2.dll-t úgy telepíthetjük, hogy a mellékelt Delphi4.reg illetve Delphi5.reg fájlokban átírjuk az elérési útvonalat arra, ahol a dll fájl található, majd telepítsük a bennük lévő információt a regisztrációs adatbázisba. A Delphi újraindítása után létrejön egy Animare menü (ha még nem volt), és ebben egy "Project open counter…" menüpont, aminek kiválasztásával megnézhetjük, hogy hányszor nyitottuk meg az adott projectet, és az összesen mennyi ideig volt nyitva.
Lényeges különbség a TProjectCounterNotifier eljárásban van, ezért ezt részletesen is ismertetjük.
Az új feladat a következő: a project megnyitásakor kiolvassuk a Registry-ből, hogy az adott project eddig összesen mennyi ideig volt megnyitva, és azt eltároljuk egy változóban. Amikor a project-et bezárjuk, akkor ehhez a változóhoz hozzáadjuk a legutolsó megnyitás óta eltelt időt, és ezt eltároljuk a Registry-ben. Amikor megnyitjuk a Project Counter ablakát, akkor abban folyamatosan látni fogjuk az aktuális időtartamot. Ha a project futtatása közben a rendszer lefagy, tehát nem a normális módon záródik be a project, akkor az utolsó időtartam elveszik!
A NotifyCode paraméterben megkapjuk az esemény azonosítóját. A project megnyitása után ez fnProjectOpened, míg a bezárásakor fnProjectClosing. Ha az előbbi esemény következik be, akkor a Form2 FLastTime változójába kiolvassuk a Registry-ből az eddig eltelt időt. Ezt az értéket úgy azonosítjuk, hogy a project fájl nevéhez hozzáfűzzük a "Time" sztringet. A Form2.FCurrentTime változóban eltároljuk az aktuális időpontot, amire az eltelt idő kiszámításánál lesz szükség. Mivel furcsa módon előfordulhat, hogy a project bezárásakor nem ugyanazt a fájlnevet kapjuk meg, amit a project megnyitásakor, ezért ezt is eltároljuk a Form2.FProjFileName változóban.
A project bezárásakor az eltárolt értékekből és az aktuális időpontból kiszámoljuk az összesen eltelt időt, és eltároljuk azt a Registry-be.
fnProjectClosing: begin
with TRegistry.Create do begin
Form2.Timer1.Enabled:=false;
OpenKey(REGKEY, true);
WriteTime(Form2.FProjFileName+'Time', (Form2.FLastTime+(Time-Form2.FCurrentTime)));
CloseKey;
Free;
end;
end;
A Form2-n elhelyeztünk egy TTimer komponenst, aminek OnTimer eseményénél folyamatosan frissítjük az eltelt időt:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Label5.Caption:=TimeToStr(FLastTime+Time-FCurrentTime);
end;
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 393. oldal
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|