Lange og korte filenames

Hvordan konvertere fullt filnavn baner. Korte filnavn konvertert til lange filnavn, lange filnavn til korte filnavn og Finhakk filenames.When et filnavn er droppet på et skjema eller en kommandolinje inkluderer afilename OS bruker korte filnavn format (8,3) sikret Hovedårsaken er at et kort filnavn format kan ikke inneholde aspace-charter. Dette funker fint siden space-charter isused som en fil delimiter.The følgende tre funksjoner vil hjelpe deg å konvertere mellom theShort og lange filnavn. Jeg har lagt den Finhakk filnavnet funksjonen tohelp vise et fullstendig filnavn inklusive banen. {=============================== ====================} Funksjon ShortFileName (Const Filename: String): String; {================= ==================================} Var ATMP: Array [0..255] Av Char, begynner Hvis ikke FileExists (filnavn) da begynne Resultat: = ''; Slutt Else begynner Hvis GetShortPathName (PChar (Filename), ATMP, sizeof (ATMP) - 1) = 0 Then Begynn Resultat: = Filename; Avslutt Else Begynn Resultat: = StrPas (ATMP); Slutt; Slutt, slutt; {============================================= =} Funksjon LongFileName (kortnavn: String): String; {===================================== =========} Var SR: TSearchRec; Begynn Resultat: = ''; Hvis (pos ( '\\\\', kortnavn) + pos ( '*', kortnavn) + pos (, kortnavn) < '?'; ≫ 0) eller ikke FileExists (kortnavn), og start {ignorere NetBIOS-navn, joker tegn og ugyldige filnavn} Avslutt; Slutt; Mens FindFirst (kortnavn, faAnyFile, SR) = 0 Har Begynn {neste del som prefiks} Resultat: = '\\' + SR.Name + Resultat; SysUtils.FindClose (SR); {De SysUtils, ikke WinProcs prosedyre! } {Katalog opp (klipp før '\\')} shortname: = ExtractFileDir (kortnavn); Hvis lengde (kortnavn) < = 2 da begynne Break; {Kortnavnet inneholder stasjonsbokstaven etterfulgt av ':'} End; Slutt; Resultat: = ExtractFileDrive (kortnavn) + resultat; end; {===================================== ====================} Funksjon Kjøttdeig (PathToMince: String; Inspace: Integer): String; {============== ===========================================} //"C: \\ program Files \\ Delphi \\ DDrop \\ TargetDemo \\ main.pas "//" C: \\ program Files \\ .. \\ main.pas "Var sl: TStringList; Shelp, sFile: String; børsnoteringer: Integer; Begynn Shelp: = PathToMince; børsnoteringer: = POS ( '\\', Shelp); Hvis børsnoteringer = 0 Then Begynn Resultat: = PathToMince; Avslutt Else Begynn sl: = TStringList.Create; //Decode streng Mens børsnoteringer < > 0 Har Begynn sl.Add (Copy (Shelp, 1, (børsnoteringer - 1))); Shelp: = Kopier (Shelp, (børsnoteringer + 1), Lengde (Shelp)); børsnoteringer: = POS ( '\\', Shelp); Slutt; Hvis Shelp < > '' Så Begynn sl.Add (Shelp); Slutt; //Socket strengen sFile: = sl [sl.Count - 1]; sl.Delete (sl.Count - 1); Resultat: = ''; Mens (Lengde (Resultat + sFile) < Inspace) og (sl.Count < > 0) Vet Begynn Resultat: = Resultat + sl [0] + '\\'; sl.Delete (0); Slutt; Hvis sl.Count = 0 Then Begynn Resultat: = Resultat + sFile; Avslutt Else Begynn Resultat: = Resultat + '.. \\' + sFile; Slutt; sl.Free; Slutt, slutt,
Konklusjon: Funksjon som ShortFileName, LongFileName, og Finhakk er greathelpers i en RAD miljø
.