|
|
Átmeneti állománynév generálása és átmeneti könyvtár lekérdezése
|
|
Példaprogram letöltése
5303 bájt
|
Olyan alkalmazásoknál, ahol gyakran alkalmazunk átmeneti fájlokat, tudnunk kellene az átmeneti fájloknak fenntartott könyvtár elérési útvonalát. Ezen túlmenően még az is jól jönne, ha az átmeneti fájl nevét automatikusan állítaná elő nekünk az operációs rendszer, figyelve arra, hogy olyan nevű fájl még ne legyen az átmeneti könyvtárban. Az már csak egy plusz dolog lenne, ha a fájlt még létre is hozná nekünk. Mindezeket a feladatokat nyugodtan rábízhatjuk a Windows-ra!
Az átmeneti könyvtár elérési útvonala általában a TMP vagy TEMP nevű környezeti változóban van megadva, akár ezekből is lekérdezhetnénk. Az operációs rendszer alapesetben a TMP változót használja, viszont ha ez, vagy az ebben megadott elérési útvonal nem létezik, akkor a TEMP változó tartalmát veszi figyelembe. Sokkal egyszerűbb viszont a Windows direkt az átmeneti könyvtár lekérdezésére alkalmazható függvényének használata. Ez a függvény nem más, mint a GetTempPath.
function GetTempPath(nBufferLength: DWORD; lpBuffer: PChar): DWORD;
A függvény első paramétere annak a buffernek hossza, amiben az eredményt megkapjuk. A második paraméter a buffer kezdőcímét tartalmazó pointer. A függvény visszatérési értéke a könyvtár nevének hossza. Ha ez 0, akkor nem sikerült a művelet.
A könyvtár nevét mindig egy \ jellel lezárva kapjuk meg (pl. "C:\TEMP\").
var
TmpPath:array[1..128] of char;
…
GetTempPath(128, @TmpPath);
ShowMessage('Az átmeneti könyvtár: '+TmpPath);
Ha megvan az átmeneti könyvtár neve, akkor hozzunk létre benne egy átmeneti fájlt. A fájl nevének meghatározásához és a fájl létrehozásához szintén használhatunk egy Windows függvényt.
function GetTempFileName(lpPathName, lpPrefixString: PChar;
uUnique: UINT; lpTempFileName: PChar): UINT;
A függvény a megadott könyvtárnévből, sztringből és sorszámból előállít egy fájlnevet, aminek a kiterjesztése .TMP lesz.
A paraméterek jelentése:
- lpPathName: a könyvtár neve, ahol a fájlt létre kell hozni.
- loOrefixString: a fájlnév első 3 karakterét ennek a sztringnek az elejéről veszi.
- uUnique: a fájl sorszáma, aminek egyedinek kell lennie. Ha 0-t adunk meg, akkor automatikusan előállít egy sorszámot a rendszeridő felhasználásával, amelyet hexadecimális formában hozzáfűz a fájlnévhez. Ebben az esetben létre is hozza a fájlt. Ha 0-nál nagyobb számot adunk meg, akkor nem hozza létre a fájlt és nem is ellenőrzi, hogy ilyen fájlnév létezik-e már az adott könyvtárban.
- lpTempFileName: a buffer, amiben visszakapjuk a fájlnevet a teljes elérési útvonallal együtt.
GetTempFileName('C:\TEMP', 'Animare', 0, @TmpName);
C:\TEMP\Ani34A8.TMP
A függvény visszatérési értéke egy sorszám, amit a fájlnév előállítására is használt. Ha az eredmény 0, akkor nem sikerült a műveletet végrehajtani.
procedure TForm1.Button1Click(Sender: TObject);
var TmpFileName:array[1..MAX_PATH] of char;
ReturnValue:integer;
s:string;
begin
ReturnValue:=GetTempFileName(PChar(Edit1.Text),
'Animare', 0, @TmpFileName);
s:=IntToStr(returnValue)+': '+TmpFileName;
Memo1.Lines.Append(s);
end;
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 248. 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!
|