Ponekud zajimavy programatorsky obrat
if OpenDialog1.FileName <> `` then if GetFileOwner(`soubor.txt`, ...
to ma byt nejaka legrace nebo coze ??
Zbytecne pouziti GetMem/FreeMem a z toho i potrebneho try..finally bloku je taky lahudka.
Mozna by byl zajimave rict proc?
Navic se tam jeste nesmyslne alokuje pamet ktera se pak neuvolni.function GetFileOwner(const FileName: string; var Domain, Username: string): Boolean;const BufferSize = 1024;var SecDescr: PSecurityDescriptor; SizeNeeded, SizeNeeded2: DWORD; OwnerSID: PSID; OwnerDefault: BOOL; OwnerName, DomainName: array [0..BufferSize] of Char; OwnerType: SID_NAME_USE;begin GetFileOwner := False; GetMem(SecDescr, BufferSize); try if GetFileSecurity(PChar(FileName), OWNER_SECURITY_INFORMATION, SecDescr, BufferSize, SizeNeeded) and GetSecurityDescriptorOwner(SecDescr, OwnerSID, OwnerDefault) then begin SizeNeeded := BufferSize; SizeNeeded2 := BufferSize; if LookupAccountSID(nil, OwnerSID, OwnerName, SizeNeeded, DomainName, SizeNeeded2, OwnerType) then begin Domain := DomainName; Username := OwnerName; GetFileOwner := True; end; end; finally FreeMem(SecDescr); end;end;
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.