Commander típusú fájlkezelő készítése Delphi segítségével
Szakdolgozat
Billx
2005.
Tartalom 1. A fájlkezelő programok jelentősége
3
1.1.Hogyan alakultak ki a fájlkezelők
3
1.2.Néhány elterjedt fájlkezelő bemutatása különböző platformokon4 1.2.1. Norton Commander
4
1.2.2. Total Commander
5
1.2.3. Directory Opus
6
2. A commander típusú fájlkezelő ismertetése
7
2.1. A program futtatásához szükséges hardver és szoftver követelmények
7
2.2. A fájlkezelő általános bemutatása
7
2.2.1. A fájlkezelő meghatározása
7
2.2.2. A fájlkezelő fájl állománya
7
2.2.3. Kezelési útmutató felhasználóknak
8
2.2.4. A fájlkezelő szakmai leírása
10
3. Befejezés
23
Mellékletek (1 – 16)
24 -30
Adatszótár
31
Felhasznált irodalom
33
2
1. A fájlkezelő programok jelentősége
A fájlkezelő programok jelentősége, hogy egyszerűbbé és gyorsabbá
teszik
a
számítógépek
alkalmazását,
ezáltal
elősegítették a számítógépek elterjedését. Segítségükkel nem kényszerült a felhasználó megtanulni az operációs rendszerek nagyszámú és bonyolult fájlkezelő utasításait. Azért választottam szakdolgozatom témájának egy fájlkezelő program elkészítését, mert Windows-os környezetben akartam alkalmazni az általam sokra tartott AmigaOS-re készült Directory Opus nevű fájlkezelő program egy-két remek megoldását.
1.1.Hogyan alakultak ki a fájlkezelők Az
első
számítógépeknél
még
bitkapcsolókat
és
lyukkártyás
adattárolókat alkalmaztak, ezért ezen típusú gépekhez nem kellett még fájlkezelő program. Ezek a gépek csak a memóriájukban tárolták az információkat, többségük csak számolni tudott. Később megjelentek a hajlékony mágneslemezes meghajtók, amelyekhez még szintén nem kellettek fájlkezelők, mert elég volt egy az egyben az egész lemezt lemásolni, és már lehetett is róla bootolni. Ha mégsem az egész lemezt akarta a felhasználó lemásolni, akkor parancssoros utasításokkal tudott fájlonként válogatni. Később a merevlemezek megjelenésének következményeképpen kezdtek el fájlkezelőket készíteni, de ezek használata bonyolult volt egy átlagos felhasználónak, és ugyanakkor mégis keveset tudtak a mai fájlkezelőkhöz mérten. A fájlkezelő
3
elterjedésében áttörést az 1980-as évek jelentették, amikor a merevlemezes meghajtók széles körben kezdtek elterjedni, és igény jelentkezett a fájlok rendezett és átláthatóbb kezelése iránt. A legtöbb neves fájlkezelő ebben az évtizedben született meg.
Ezek egyike a PC-n DOS-os környezetben legelterjedtebb fájlkezelő, a Norton Commander, amelyet 1985-ben fejlesztettek ki. Ezt követően még évekig bővítették ezeket a programokat újabb és újabb funkciókkal, és javították ki rajtuk az évek során észlelt hibákat. A mai korszerű operációs rendszerek alapállapotban tartalmaznak nemcsak parancssoros fájlkezelési műveleteket, hanem grafikus, egérrel vezérelhető fájlkezelőket is.
1.2.Néhány
elterjedt
fájlkezelő
bemutatása
különböző
platformokon
1.2.1. Norton Commander
1985-ban fejlesztette ki a Symantec. Népszerűségét, sikerességét és használhatóságát jelzi, hogy egészen 1995-ig frissítették a verzióit. DOS operációs rendszerhez alakították ki, ígyhát nem grafikus, hanem karakteres képernyővel valósította meg a kétablakos commander-típusú megjelenítést. Ennek tulajdonítható, hogy - a DOS korlátai miatt – csak 8+3-as fájl- és könyvtárneveket képes kezelni. Billentyűről vezérelhető, számos gyorsbillentyű-kezelése van, sőt egér-driverrel akár az egér kezelésére is rábírható. A Win95 megjelenéséig nagyon elterjedt volt. Azokon a gépeken, ahol Win95 előtti operációs rendszer van, még ma is előszeretettel használják megbízhatósága és észszerű (egyszerű) kezelhetősége miatt. Hátránya, hogy csak az angol billentyűzet-kiosztású ASCII 4
karaktereket kezeli. Az 5.0 változat - a kezdeti változatokhoz képest – jóval több funkciót tud, pl: képes felismerni a gép hardverfelépítését, könyvtár fát tud generálni, számos kiváló funkcióval rendelkezik az alap fájlkezelési műveleteken túl. A mai napig sok fájlkezelő használja ennek a programnak a billentyűkombinációit és sémáit.
Széleskörű elterjedtségét a Win95 megjelenése visszaszorította, az idő eljárt felette.A vérbeli szakemberek ma is elismeréssel és nosztalgiával emlegetik.
1. sz. melléklet: A Norton Commander megjelenítési ábrája
1.2.2.Total Commander
1993. óta fejlesztik ezt a fájlkezelőt, ma is folyamatos a frissítése. Kezdetben Windows Commander néven jelent meg, de a Microsoft beperelte a program íróját a védett Windows név használata miatt. 32
bites
Windows
operációs
rendszerű
számítógépeken
használható. Windows alapú pc-ken talán ez a legelterjedtebb fájlkezelő mostanában. Billentyűről és egérről is kezelhető, támogatja a hosszú fájlneveket és a magyar abc betűit is. Használatához regisztráltatni kell a programot, ez népszerűségét csökkenti. Számomra apróbb ergonómiai és kezelési hiányosságai vannak, valamint egy nagyon bosszantó funkcióbeli hiányossága: a fájlokat átnevezni csak a move opció használatával lehet, ekkor azonban ki kell törölni az elérési utat ahhoz hogy megadható legyen a fájl neve. A
kétoldalas
megjelenítés,
valamint
az
alul
egy
sorban
elhelyezkedő funkció gombok a régi Norton Commandert idézik. Pluginok használatával bővíthető. Előnye, hogy a program egy
5
ablakban fut, amely saját igény szerint méretezhető, és ezt meg is jegyzi.
2. sz.melléklet: A Total Commander megjelenési ábrája
1.2.3. Directory Opus
1990. óta fejlesztik ezt a programot. Ezt a fájlkezelőt egy alternatív számítógép típuson (Amiga) és OS-en ismertem meg, de ismereteim szerint Windowsra is portolták. Egérrel és billentyűvel egyaránt kezelhető. Sok opció van benne. A kezelőfelülete óriási mértékben változtatható. Méretezhető az ablaka. Külön OS alapú gombok létrehozása lehetséges a saját konfigurációs programjának segítségével. Kezdők részére talán a túl sok funkciótól és beállítási lehetőségtől egy kicsit bonyolult a használata. A szülőkönyvtárba egy folyamatosan elérhető gombbal lehet visszatérni, amely mind a két ablak oldalán elérhető, így nem kell a sor tetejére menni ahhoz, és visszalépni egy könyvtárat. Ha ugyanerre a gombra jobb egérgombbal kattintunk, akkor rögtön a root-könyvtárba jutunk. Ennek a programnak még a gépigénye is kiemelkedően kedvező volt, mert egy 7Mhz-es gépen is kielégítő sebességgel futott.
3-4. sz. melléklet: A Directory Opus megjelenítése
Bár számtalan fájlkezelő létezik és az összehasonlításban, én a legelterjedtebbeket mutattam be. Mindegyiknek vannak előnyei és erősségei, de hibái is.
A főbb hibák legtöbb esetben a következők: -
regisztráció köteles
-
drága
6
-
túl kevés funkciója van
-
túl bonyolult
2. A commander típusú fájlkezelő ismertetése
2.1. A program futtatásához szükséges hardver és softver követelmények -
Intel X86, vagy azzal kompatibilis számítógép
-
Windows operációs rendszer
-
a Windows elindulása után még legalább 8MB szabad memória
-
a háttértáron 1-2 MB szabad hely
-
Windows-kompatíbilis grafikus kártya
2.2. A fájlkezelő általános bemutatása 2.2.1. A fájlkezelő meghatározása A program 2 ablakos, úgynevezett commander típusú fájlkezelő. A bal ablak bal, a jobb ablak jobb oldalán elhelyezkedő gombbal - az egér bal gombjával kattintva - a szülőkönyvtárba, míg az egér jobb gombjával kattintva a gyökérkönyvtárba léphetünk. Jobboldalon lent találhatók a funkció gombok, melyekből a fontosabb feladatoknak a menüben is van megfelelője. Baloldalt a drive-kiválasztó legördülő menü található. Az ablakok alatti sor a könyvtár aktuális elérési útját mutatja. A Fájlszerkesztő nevű gomb megnyomásával a Windows Notepad szövegszerkesztője jelenik meg. 2.2.2. A fájlkezelő fájl állományai
Fájlkezelő.exe = -
ez a futtatható főprogram, mérete: kb: 600 Kbyte.
Config.cfg = ez a config fájl, mérete kb: 40 byte.
7
Ebben tárolja a program -
az ablak méretét
-
az ablakok aktuális elérési útját
-
valamint azt, hogy a változtatásokat érvénybe léptesse vagy sem.
2.2.3. Kezelési útmutató felhasználóknak A fájlkezelővel egy ablakban összesen integernyi könyvtár és fájl lehet egyszerre, mivel a Delphi-nek a listbox objectjét használtam, amely integer értéknyi sort enged tárolni. A fájlok string méretűek lehetnek, szintén a listbox meghatározása alapján. A fájlok kiterjesztését a fájl vége felőli utolsó ponttól választja le a program.
A két ablak alatt egy-egy labelen fel van tüntetve az aktuális könyvtár teljes elérési útja. Ha nem fér el az elérési út, a többi részt egyszerűen levágja. Ha ez a label piros színű, akkor a fölötte lévő ablak az aktív.
Az ablak bal alsó részén található egy DriveComboBox, mellyel a driveok és particiók között lehet válogatni. A kiválasztott partíció az aktuális ablakban jelenik meg.
A bal és a jobb oldali ablak is négy elkülönülő részre van tagolva. -
Az elsőben a fájlok és a könyvtárak neve található.
-
A másodikban a fájlok kiterjesztése, vagy a könyvtár jelölése(
).
-
A harmadik oszlopban a fájlok mérete található. Könyvtárak esetén ez üres marad.
-
A negyedik egyben utolsó oszlop a könyvtárak és fájlok dátumát mutatja.
8
A gombok közül balról az első a Fájlszerkesztő. Ennek működéséhez szükséges a Windows-okban alapbeállításban létező Notepad program. Ha nincs semmi kijelölve, akkor egy új fájlt hoz létre, amelyet a Notepad szerint menthetünk és szerkeszthetünk. Ha ki van jelölve egy fájl, akkor a kijelölt fájl tartalmát tölti be a Notepad szerkesztőjébe. Több kijelölt fájl esetén a legutolsó kijelölt fájlt fogja betölteni.
A Törlés gomb egy kijelölt fájl vagy könyvtár törlésére szolgál. A gomb megnyomása után egy ’Biztos?’ stringű ablak jelenik meg. Ha „Igen” a válasz, akkor töröl, ha „Mégsem”, akkor visszalép a fájlkezelőben úgy, hogy semmit nem változtat.
A Kijelöl gomb megnyomása után a következő ablak jelenik meg:
Az
OK
gomb
megnyomásával
nyugtázhatjuk
beírásunkat és
utasításunkat. Ez a gomb kijelöli a beírt kiterjesztésnek megfelelő fájlokat az aktuális ablakban és könyvtárban.
Az Átnevez gombbal egy fájlt lehet átnevezni egyszerűen.
9
A gomb lenyomására az ábra szerinti ablak jelenik meg . A „Mégsem” gombra lépve a program visszatér a Fájlkezelőhöz. A beírt szövegnek az Átnevez gomb lenyomásával lehet érvényt szerezni.
A Szülőgombbal az aktuális könyvtárból lehet a szülőkönyvtárába lépni. Ez mindig az aktuális ablaknál történik.
A Kilépés gomb megnyomására a program egy ablakban visszakérdez a véletlen kilépés elkerülése érdekében. Megerősítésre kilép, különben visszalép. A menüben található Kilépés menü is ugyanezen elven működik. Az ablak jobb felső sarkában található X gombbal gyors kilépés érhető el. Ez annyit jelent, hogy nincs visszakérdezés, hanem azonnal kilép a programból.
2.2.4. A fájlkezelő szakmai leírása A fájlkezelő 8 formból áll. A felépítése a következő:
Form1:
Az első form a főprogram, amely 8 lisbox-ból, 2 labelból, 1 drivecombobox-ból,
1
mainmenűből,
2
directorylistbox-ból,
2
filelistbox-ból, 1 imagelistből, 10 db hotkey-ből és 12 db gombból áll. • A 8 listbox-ból 4 a bal oldalhoz és 4 a jobb oldalhoz tartozik. -
Az 1. a fájl vagy könyvtár nevét írja ki.
-
A 2. a könyvtár könyvtár-jellegére utal azzal, hogy ’’ feliratot ír a listbox-ba, illetve fájl esetén annak kiterjesztését írja ki.
10
-
A 3. listbox-ban a fájl méretét jelöli.
-
A 4. pedig a fájl dátumát jeleníti meg.
A 5-8 listbox természetesen az 1-4. listbox-nak felel meg az ellentétes oldalon.
• A drivecombobox-szal választható ki a partició. Mindig az aktív ablakra érvényesíti a beállítását. Ezt úgy éri el, hogy az aktív ablak a
drivecombobox
dirlist
property-jét
mindig
a
saját
directorylistboxá-ra állítja. Ha változik az értéke, akkor a kiir eljárást hívja meg. • A Mainmenü-nek 3 db fömenüje van: -
File – e menüponton belül két lehetőség érhető el:
a) Verzió: Ez egy showmessagebox segítségével kiírja a program
aktuális
verzióját.
Az
F3
billentyű
lenyomásával is előhozható a hotkey delphi funkció segítségével. b) Kilépés: A formon lévő kilépés gombnak az eljárását hajtja
végre.
Az
Alt+F4
billentyűk
együttes
lenyomásával is aktiválható
-
Funkciók menüponton belül 8 db gomb van:
a) Szövegszerkesztő: A formon lévő szövegszerkesztő gomb eljárását hívja meg. Aktiválható az F4 billentyű lenyomásával is. b) Újkönyvtár: A formon lévő F7 c) Kijelöl F2
11
d) Keresés F10 e) Átnevez F9 f) Törlés F8 g) Másolás F5 h) Áthelyez F6
-
Az Egyéb menüpontban 2 almenü van:
a) Súgó: A form8-at hozza előtérbe a Showmodal eljárással. Az F1 lenyomására szintén a form8 jelenik meg.
b) Mentés
kilépéskor:
Ez
az
almenüpont
azt
szabályozza, hogy kilépéskor a program elmentse-e az ablak méretét, és a két oldal aktuális elérési útjait annak érdekében, hogy a legközelebbi bekapcsolásnál ezek szerint nyíljon meg a program. Ez az eljárás a mentes nevű boolean típusú globális változót állítja át a másik állásba aszerint, hogy a menüpontnak az Imageindex property-je az 5-ös (X piktogramm) itemre mutat, vagy a 25-ös (pipa piktogramm) számú itemre. Ezáltal a menüben mindig az aktuális állapot szerinti piktogramm látható.
Itt látható a két ábrán a Mentés kilépéskor piktogrammjának két állapota.
12
• 2 db DirectoryListBox
• 2 db FileListBox: Ezek az éppen aktív ablak alapján vannak összekötve a DriveComboBox-al. Directorylistbox1 még a Filelistbox-szal
van
összekötve,
míg
értelemszerűen
a
Directorylisbox2 a FileLIstBox2-vel. • 1 db ImageList is van a formon amiből a menü szedi a piktogrammokat. A mainmenü Imagies property-jében van az Imagelist1 megadva. • 10 db Hotkey a formon, amik F1-F10-ig vannak beállítva a funkcíókhoz. • 2 db Label: Ezekre írja ki a szülőgomb és a kiir eljárás az aktuális könyvtár elérési útját. A DirectoryListbox Directory property-jében tárolja az aktuális könyvtárat, ezt adja át az eljárás a labeleknek, minden egyes változáskor. • 12 db Button: -
A form bal és jobb oldalán van 1-1 gomb amik a hozzájuk közelebb eső ablak aktuális könyvtárát válják át azok szülőkönyvtárára, ha nem az az ablak volt addig az aktív, akkor azzá válik. A gomb megnyomására egy globális boolean változót, aminek bal a neve állít hamissá vagy igazzá aszerint, hogy melyik oldalon lett megnyomva a gomb. Ezek után a label színét változtatják meg, mivel ez jelzi az aktív ablakot.
13
A label színét például a Form1.Label2.font.color: =ClBackground; parancs adja meg. Ez a jobb oldali label színét feketére állítja. A Form1 .DriveComboBox1.DirList=Form1.DirectoryListBox1; paranccsal
pedig
azt
állítja
be,
hogy
melyik
directorylistbox-ra legyen a Drivecombobox hatással. A Drivecombobox kijelzőjét mindig az aktuális ablakhoz igazítja a program. Ezt
Form1.DriveComboBox1.Drive:=form1.Directory
ListBox1. Drive; parancssal éri el. A könyvtár-kezelés legfontosabb része pedig a fájlnevek stringként való kezelése. Így a DirectoryListbox-nak mindig azt a könyvtár elérési utat kell megadni String formájában amibe lépni szeretnénk. Visszalépésnél (szülőkönyvtárba lépésnél) jobbról egy ’\’ jellel kell visszább lépni és azt átadni a Directorylistbox-nak. A jobboldalról való keresést a Delphi StrUtils nevű Unitban alapból támogatja. Ehhez a StrRScan függvényt kell meghívnunk. Fel kell még használnunk a szintén ebben a unitban található
leftStr,
length,
string
és
pchar
nevű
függvényeket. A leftstr függvény egy stringet jobbról ír ki a megadott számú karakterig. A length függvény egy string hosszát adja vissza.A string függvény stringgé alakít egy arra alkalmas változót. A pchar függvény úgy viselkedik, mint a string függvény, csak pchar-ra alakítja át a változót. Ezzel a sorral lép vissza egy könyvtárat a program, a két szélső gomb lenyomására. Form1.DirectoryListBox1.Directory:=LeftStr(Form1.Dir ectoryListBox1.Directory,((length(Form1.DirectoryListB
14
ox1.Directory)+1)-(length(String(StrRScan(Pchar (Form1.DirectoryListBox 1.Directory),'\')))))); Végül a kiir eljárást hívja meg.
-
A szülő(könyvtár) gomb úgy viselkedik, mint az előbb leírt két oldalsó gomb, azzal a különbséggel, hogy ez nem aktiválja egyik ablakot sem, hanem az aktuális ablak szülőkönyvtárába lép. Kódja ezért csak a string kezelésben egyezik. A label és bal boolean típusú változókat változatlanul hagyja. Végül ez is meghívja a kiir eljárást, hogy a változásokról a user is kapjon visszajelzést.
-
A
fájlszerkesztő
gomb
a
Delphi
ShellAPI
unitját
alkalmazza. Megvizsgálja, hogy melyik oldal az aktív. Ezt a bal boolean változó értékéből tudja. Ezután az aktív ablakhoz tartozó listbox kijelölt elemeit vizsgálja meg. Ha listbox 2. oszlopában a kijelölt elemben szerepel, akkor könyvtáról van szó, ilyenkor csak paraméter nélkül elindítja a notepadot. De ha nem szerepel, akkor fájlról van szó és a ShellExecute-nak a notepadon kívül a fájl elérési útját és a fájl nevét is átadja. A fájl nevét és kiterjesztését a Listbox1 és Listbox2 aktuálisan kijelölt elemének az összege adja, mert a Listbox1 tárolja a fájl nevét és a Listbox2 pedig a kiterjesztést. Így a notepad a fájlt megnyitja, ha szöveget tartalmaz. Stringeket a + jellel lehet összeadni és egy másik stringben felfogni. Az elérési utat a Directorylistbox
Directory
tulajdonságából
lehet
megszerezni. Ha semmi sincs kijelölve, akkor is behoz egy üres notepadot a gomb.
15
-
A Kilépés gomb egy Showmessage ablakban rákérdez a szándékra, megerősítés végett. A Messagebox tulajdonsága, hogy lehet vizsgálni, hogy mit nyomott meg a user. Ha az ID=6 akkor az igen gombot. Ha az id=6 akkor a program bezáródik, különben visszatér a fájlkezelőbe.
-
A Kijelöl gomb megnyomására a program a form4-et nyitja meg, mégpedig a Form4.showmodal; parancs segítségével.
-
A Törlés gomb megnyomására egy messagebox hívódik meg és a kilépés gombnál leírtak alapján dönti el, hogy a user
törölni
kíván
vagy
sem.
Igen
válasz
esetén
megvizsgálja, hogy melyik oldal az aktív, majd , hogy könyvtárról, vagy fájlról van szó. Ha fájlról van szó akkor a DeleteFile függvény segítségével letörli a fájlt és a sikerességét a törlésnek egy siker nevű boolean típusú változóban fogja fel. Ha nem sikerült a törlés, akkor egy messagebox-ban erre figyelmeztet. Ha viszont könyvtárról van szó akkor a Torol(töröl) nevű eljárást hívja meg és átadja neki a törölni kívánt könyvtár elérési útját és nevét. A torol eljárás visszatérési értéke boolean típusú és jelzi a törlés sikerességét.
-
A Keresés gomb a Form5-öt jeleníti meg, majd a bezárásakor a kiir eljárást hívja meg.
-
Az Új könyvtár gomb a Form7-et jeleníti meg.
-
Az Áthelyez gomb a Fotm6-ot jeleníti meg.
16
-
A Másolás gomb a Hely nevű integer típusú változónak ad értéket és a Form2-t nyitja meg.
-
Az Átnevez gomb a Form3-at mutatja meg.
Form2:
A form2 a másoláskor megjelenő form. 2db button és 5db label található rajta. • 2 db Button: -
Ha a Mégsem gombra kattint a felhasználó, akkor a form bezáródik.
-
A Másolás gomb lenyomásával Button1click nevű eljárás hívódik meg. Ebben három lokális változó van. Egy FromF és egy ToF string típusú, és van még egy Siker nevű, amely pedig boolean típusú. Először a label5re írja ki, hogy ’A másolás folyamatban’. Ezután az aktuális oldalt keresi meg, majd azt dönt el, hogy fájlt, vagy könyvtárat kell átmásolni. Aennyiben fájlt kell átmásolni, a Copyfile eljárást hívja meg, különben pedig a masols eljárást. Mindkét eljárásnak két stringet kell átadni, amiből az első a másolni kívánt elem, a másik pedig a hely, ahová másolni kell. Mindkét eljárásnak van még egy boolean típusú változója, amit egy siker nevű longbool típusú változóban fog fel. Ha a siker értéke hamis, akkor egy showmessage segítségével egy üzenetet továbbít a felhasználó felé. Az összes listbox-ot updateli, és meghívja a kiir eljárást. Végül leveszi a label5 feliratát és bezárja a Form2-t.
17
• 5 db Label található ezen a formon. -
A form megjelenésekor a Label1 és Label3 fix captiont kap, mégpedig kiírják, hogy ’honnan’ és ’hová’ a másolandó fájl helyét, és hogy hová fogja másolni azt. Egy ’a’ nevű lokális változóba, aminek integer a típusa, elmenti a listbox aktuális elemének a számát.
-
A
Label2
captionjébe
beírja
az
aktuális
oldal
directorylisbox-szának a directory értékét (könyvtár elérési út), és ehhez hozzáadja a Listbox1 és 2 aktuális elemeit(fájlnév).
-
A Label 4 csak a directorylisbox directory értékét kapja meg. Ha könyvtárat másol a felhasználó, akkor a label2 kiírja a könyvtár nevét, majd még egy ’’ feliratot, jelezve, hogy egy könyvtárat fog másolni.
-
A Label5 a Másol gomb megnyomásakor konstans stringet kap, amelynek értéke a másolás folyamatára utal.
Form3:
Az Átnevez(form3)-on 1 db edit objektum és 2 db button található. • A 2 db button a következő funkciókat végzi: -
A Mégsem gomb lenyomására a form3 bezárodik a form3.close; parancs hatására.
18
-
Az Átnevez gomb az alapján, hogy a bal és a dir változó igaz vagy hamis, tudja, hogy melyik ablak az aktív, és hogy könytár vagy fájl, amit át kell nevezni. A dir változó a form3 onshow eseményében kap értéket. Ezt követően átmásolja a fájlt a saját elérési útjára, majd az eredetit letörli. Egy siker nevű boolean változóban fölfogja az esemény sikerességét. Meghiúsulás esetén egy showmessage eljárással (amit a Delphi alap unitjai tartalmaznak) kiírja a képernyőre, hogy az átnevezés nem sikerült. Könyvtár esetén egy atnevezdir nevű eljárást hív meg, amelynek átadja az eredeti és a kívánt könyvtár nevet, valamint az elérési utat. Az atnevezdir nevű eljárásban használt függvények miatt ennek a formnak a ShellAPI unitot kell használnia. Végül a filelistbox-okat updateli, ami a változásokat érvényesíti rajtuk, és ezután a kiir eljárást hívja meg, ami listbox-szokba írja ki a fájlok és könyvtárak nevét.
Form4:
A Form4 1 Labelt, 1 Buttont valamint 1 Edit szövegmezőt tartalmaz. A Kijelöl funkció a form4en kapott helyet. • A Labelen egy konstans string található. A string tartalma:’*.’. • Az Edit szövegmezőben kell megadni a kijelölni kívánt fájl kiterjesztését. Az Edit szövegmező a megjelenése pillanatában üres. • A Form4-en található Button megnevezése: OK gomb. Ennek megnyomásával nyugtázhatjuk a beírt kiterjesztést. Az ablak
19
jobb felső sarkában található X jellel lehet visszalépni a fájlkezelőbe. Ha a felhasználó üresen nyomja meg az OK gombot, akkor is visszalép a fájlkezelőbe, csak előtte jelzi, hogy nincs beírva semmi. Amennyiben az edit1 text property-je ki van töltve, akkor az eljárás a van nevű boolean típusú változót hamisra állítja. Utána az aktuális oldal alapján az ahhoz tartozó listbox-on végrehajt egy for ciklust. A ciklus az első elemtől indul, és az utolsó elemig megy. A listbox-ban szereplő elemeket a form1.ListBox1.Count paranccsal tudhatjuk meg. A ciklusban a listbox összes elemén végigmegy, és selected (kijelölt) tulajdonságát hamisra állítja, hogy csak az legyen majd kijelölve, amit a felhasználó szeretne. A ciklus után a Kilép nevű boolean változót is hamisra állítja. Az i nevű integer típusú segédváltozót a directorylistbox aktuálisan szereplő elemeinek összegére állítja. Itt megvizsgálja, hogy van e valami az Edit sorban, ha nincs üzenetet küld. Ha van, akkor egy hátul tesztelős ciklust indít el. E ciklusban egy b nevű Pchar típusú segédváltozóban tárolja az éppen i értéknek megfelelő fájl nevét. Egy a nevű string típusú változóba pedig a b változót rakja át, de úgy, hogy végrehajt rajta egy StrUpper nevű függvényt, amely az összes karaktert nagybetűre alakítja. Ez utóbbi függvényre azért van szükség, hogy a felhasználónak ne kelljen arra figyelnie, hogy a fájl kiterjesztésében a betűk kicsik, nagyok, vagy váltakozva szerepelnek. A ciklus az Edit text property-jével is végrehajtja ugyanezt. Ezután egy if feltétel segítségével megnézi, hogy egyezik-e a beírt és a ciklusban szereplő
aktuális
fájl.
Egyezés
esetén
mind
listbox
ciklusváltozóadik elemének a selected tulajdonságát, mind a van változót igazra állítja. Egy if feltétel figyeli, hogyha a listboxban szereplő összes elem értéke egyenlő a ciklusváltozóval, akkor a ’Kilep’ nevű és boolean típusú változó értéke legyen
20
igaz. Ezután a ciklusváltozó értékét az inc(i) paranccsal növeli. A ciklus kilépési feltétele, hogy a ’Kilep’ nevű változó értéke legyen igaz. Ezután frissíti a listbox-okat. Ha a van változó értéke még ekkor is hamis, akkor kiírja, hogy ’nem talált megfelelő fájlt’. Végül bezárja a form4et.
Form5:
A Keresés funkció a form5ön található. 2 db Label 2 db Edit mező és 3 db Button található rajta. A form5 bezárása után a form1-en található Keres gomb eljárása a kiir eljárást hívja meg. • A 2 Label konstans stringet tartalmaz. • Az Editek üresen jelennek meg. • A 3 Button megnevezései: Mégsem, Keresés, Fájlhoz ugrás -
A Mégsem gomb a form5öt zárja be.
-
A Keresés gomb megnézi, hogy mind a két Edit ki van-e töltve. Ezt a If (edit1.Text='') or (edit2.Text='') feltétel kiértékelésével éri el. Ha valamelyik még üres, akkor hibaüzenetet küld. Ha minden ki van töltve, akkor a label3-ra a ’keresés folyamatban’ címkét rakja ki, és a fajlkeres függvényt hívja meg. Ha a fajlkeres függvény igaz értékkel tér vissza, akkor kiírja a képernyőre a keresett fájl elérési útját. Ha nem talál a keresésnek megfelelő fájlt, akkor ezt egy új ablakban jelzi. Végül a form5.label3 caption-jét üresre állítja.
21
-
A Fájlhoz ugrás gomb megvizsgálja, hogy nem üresek-e az Editek mezői. Ha üresek, akkor hibaüzenetet küld, különben a keresésgomb eljárásában megállapított elérési utat állítja be az aktuálisan aktív oldal directorylisbox directory
tulajdonságában,
ezáltal
a
kiir
eljárás
legközelebbi meghívásakor ezt a könyvtárat fogja a listbox megjeleníteni.
Form6:
A Form6 2 Buttont és 5 Labelt tartalmaz. Az Áthelyez funkció a Form6-on helyezkedik el. • A Form2-ben leírt Másol eljáráshoz nagyon hasonlatos az algoritmusa, a különbség csupán annyi, hogy a könyvtár áthelyezésénél az Athelyez nevű eljárást hívja meg a masols helyett, fájlok áthelyezésénél pedig a copyfile parancs után az eredeti helyén a fájlnak egy deletfile nevű eljárást is végrehajt. Minden másban megegyezik a Másolás funkcióval. Pl: hibaüzenet, kiírás.
Form7:
Az új könyvtár gomb a Form7-en van. 1 db Label, 1 db Edit és 2 db Button található ezen a formon. • A Label egy konstans stringet tartalmaz, amelynek elnevezése: ’A könyvtár neve’. • Az Edit objektum üresen jelenik meg, mikor a form megjelenik. •
A Buttonok neve: Mégsem és OK. -
Mégsem gomb bezárja a Form7-et.
22
-
Az OK gomb megnyomása után a form7 onshow eseményénél a form7.Edit1.SetFocus; parancs. a kurzort az Edit1-re állítja Továbbhaladva itt is az aktív oldalt keresi meg, majd megvizsgálja, hogy a létrehozni kívánt könyvtár létezik-e már az aktuális elérési úton. A könyvtár
létezése
esetén
erről
egy
showmessage
ablakban tájékoztat. Ha nincs azonos nevű könyvtár, akkor a createdir eljárással létrehozza a könyvtárat. A createdir eljárásnak 1 paramétere van, ez pedig az elérési út és az új könyvtár neve egy stringben. A directorylistbox-okat updateli, majd a kiir eljárást hívja meg és bezárja a form7-et.
3. Befejezés
A szakdolgozatom elején célként azt jelöltem meg, hogy egy olyan commander típusú fájlkezelőt szeretnék létrehozni, amely az alapfunkciókat ismeri, tartalmazza a Directory Opus-ban megismert oldalt lévő szülőkönyvtár-gombokat, és van külön „Átnevez” funkciója. E kitűzött célokat a fájlkezelő programban teljesítettem. A mai fájlkezelők ennél jóval többet tudnak, bár tudjuk, hogy azokat évekig fejlesztik – sokszor csapatmunkában. A szakdolgozat megírására sajnos ennyi idő és lehetőség nem állt rendelkezésemre, de később szeretném kibővíteni a programom funkcióit.
23
1. sz. melléklet: A Norton Commander nézete
2. sz.melléklet: A Total Commander nézete
24
3. A Directory Opus nézete
4.. sz.melléklet: A Directory Opus menüje
25
5. sz. melléklet: A Keresés funkció ablaka
6. sz. melléklet: A Súgó ablaka
26
7. sz.melléklet
8. sz. melléklet
9. sz. melléklet
10. sz.melléklet
27
11. sz, melléklet
12. sz. melléklet
13. sz.melléklet
28
14. sz. melléklet: A Funkciók menü elemei
15. sz.melléklet: File menü elemei
29
16. sz.melléklet: A program funkció – idő ábrája
30
Adatszótár
változók neve,típusa, Bal
felhasználásuk
boolean
Igaz ha a bal oldal az aktív és hamis ha a
boolean
Ha a fájlkezelő megnyilik ez jelzi, hogy
jobb Elso
mindkét oldalt ki kell írni. Ha igaz akkor mindkét oldalt ki kell írni. Hely
integer
A filelistbox kijelölt elemének indexét
boolean
Ha igaz akkor kilépéskor kimenti az ablak
tárolja Mentes
méretét és a két oldal elérési útját. C
array[0..800] of Char;
fájlmegnyitásnál eljárásban használt
I
integer
segédváltozó a kiir eljárásban
Szam
integer
A
Pchar
A listbox egyik elemének az elérési útját
string
A kiir eljárásban tárolja a megkeresett
’\’
karakterek
számát
tárolja
kiir
eljárásban B tartalmazza A
legutolsó ’\’ jelet Per
string
Az
éppen
aktuális
’\’
jelek
számát
A
string
formcreate eseménynél hajtódik végre
Fajl
textfile
(formcreate) Ehhez rendeli a config.cfg fájlt
Prg
string
(formcreate) A program exe állományának
tartalmazza
az elérési útját ebbe adja vissza egy függvény. A1
string
(formcreate) A bal oldali ablak elérési útját
string
(formcreate) A jobb oldali ablak elérési
tartalmazza B1
útját tartalmazza C1
integer
(formcreate) A form1 méretének a left
értékét tárolja
31
D1
integer
(formcreate) A form1 méretének a top
értékét tárolja E1
integer
(formcreate) A form1 méretének a width
értékét tárolja F1
integer
(formcreate) A form1 méretének a height
értékét tárolja G1
string
(formcreate) A fájlból ebbe olvassa be a
mentés igaz, vagy hamis értékét. Id
integer
(tform1.kilps1click)
A
messagebox
visszatérési értékét ebben fogja fel. Indeksz
integer
(tform1.listbox1dblclick) Ebben tárolja azt
az indekszet ami a duplán klikkelt listbox elemének indeksze. I
integer
(tform1.listbox1click) ciklusváltozó
32
Felhasznált Irodalom:
- Sas Tibor: Delphi abszolút kezdőknek, Bp., 2002 - Molnár Csaba – Sági Gábor: Programozás Turbo Pascal nyelven, Bp., 1999 - Angster Erzsébet: Programozás Tanköny I.-II. Akadémi nyomda, Martonvásár, 2000 - Kovács-Knapp-Ágoston-Budai: Bevezetés A Számítástechnikába, Bp., 2002 - Animare Softwar: Delphi 6 példatár 1. kötet, 2001 - Kuzmina-Tamás-Töth: Programozzunk Delphi 7 rendszerben!, Kiadó: COMPUTERBOOKS KIADÓI KFT. 2004 ISBN: 9636183074
Webcímek: http://delphi.lap.hu/ http://informatika.lap.hu/ http://delphi.about.com/ http://www.ats-group.net/webmaster/linkek_delp.shtml
33