Lange og korte filnavne

Sådan konverteres fulde filnavn stier. Korte filnavne konverteret til Long filnavn, lange filnavne til Korte filnavne og Mince filnavne.

Når et filnavn tabes på en formular eller en kommando linje omfatter en

filnavn OS bruger den korte filnavne format (8.3).

Den væsentligste årsag er, at et kort filnavn format ikke kan omfatte en

space-charter. Dette fungerer pænt siden rum-charter er

anvendes som en fil skilletegn.

De følgende tre funktioner vil hjælpe dig med at konvertere mellem

Kort og Lang filnavn. Jeg tilføjede hakkekød filnavn funktion til

hjælpe vise en fuld filnavn inklusive stien.

{================================================= ==}

Funktion ShortFileName (Const FileName: String): String;

{================================================= ==}

Var

ATMP: Array [0..255] Af Char;

Begynd

Hvis ikke FileExists (filename) Derefter

Begynd

Resultat: = '';

End

Andet

Begynd

Hvis GetShortPathName (PChar (filnavn), ATMP, sizeof (ATMP) - 1) = 0 Derefter

Begynd

Resultat: = FileName;

End

Andet

Begynd

Resultat: = StrPas (ATMP);

End;

End;

End;

{==============================================}

Funktion LongFileName (korte navn: String): String;

{==============================================}

Var

SR: TSearchRec;

Begynd

Resultat: = '';

Hvis (pos ('\\', korte navn) + pos ('*', korte navn) +

POS ('?', korte navn) <> 0) eller ej FileExists (korte navn) Derefter

Begynd

{Ignorere NetBIOS-navn, joker tegn og ugyldige filnavne}

Afslut;

End;

Mens Findfirst (korte navn, faAnyFile, SR) = 0 Do

Begynd

{Næste del som præfiks}

Resultat: = '\' + SR.Name + Resultat;

SysUtils.FindClose (SR); {De SysUtils, ikke WinProcs procedure! }

{Vejviser op (skåret før '\')}

Korte navn: = ExtractFileDir (korte navn);

Hvis længden (korte navn) <= 2 Så

Begynd

Break; {Korte navn indeholder drevbogstav efterfulgt af ":"}

End;

End;

Resultat: = ExtractFileDrive (korte navn) + Resultat;

ende;

{================================================= ========}

Funktion Mince (PathToMince: String; Inspace: Integer): String;

{================================================= ========}

// "C: \ Program Files \ Delphi \ DDrop \ TargetDemo \ main.pas"

// "C: \ Programmer \ .. \ main.pas"

Var

sl: TStringList;

Shelp, $ file: String;

iPos: Heltal;

Begynd

Shelp: = PathToMince;

iPos: = Pos ('\', Shelp);

Hvis iPos = 0 Derefter

Begynd

Resultat: = PathToMince;

End

Andet

Begynd

sl: = TStringList.Create;

// Decode streng

Mens iPos <> 0 Do

Begynd

sl.Add (Kopier (Shelp, 1, (IPO - 1)));

Shelp: = Kopier (Shelp, (IPO + 1), Længde (Shelp));

iPos: = Pos ('\', Shelp);

End;

Hvis Shelp <> '' Så

Begynd

sl.Add (Shelp);

End;

// Encode streng

$ file: = sl [sl.Count - 1];

sl.Delete (sl.Count - 1);

Resultat: = '';

Mens (Længde (Resultat + $ file) <Inspace) og (sl.Count <> 0) Gør

Begynd

Resultat: = Resultat + sl [0] + '\';

sl.Delete (0);

End;

Hvis sl.Count = 0 Derefter

Begynd

Resultat: = Resultat + $ file;

End

Andet

Begynd

Resultat: = Resultat + ".. \ '+ $ file;

End;

sl.Free;

End;

End;

Konklusion:

Funktion som ShortFileName, LongFileName og Hakkekød er stor

hjælpere i en RAD miljø.