À Long et à court de noms de fichiers


Comment faire pour convertir les chemins des fichiers. Les noms de fichiers courts converti à Long nom de fichier, les noms de fichiers Longs pour les noms de fichiers Courts et Émincer les noms de fichiers.
Quand un nom de fichier est tombé sur une forme ou une ligne de commande comprend un
nom de fichier de l'OS en utilisant le format des noms de fichiers Courts (8.3).
La raison principale est qu'un nom de fichier Court format ne peut pas inclure un
espace-charte. Cela fonctionne très bien depuis l'espace-charte de l'est
utilisé comme un séparateur de fichier.
Les trois fonctions suivantes vont vous aider convertir entre les
Court et à Long nom de fichier. J'ai ajouté à la viande hachée nom de fichier de la fonction
à l'aide de l'affichage d'un nom de fichier et le chemin d'accès.

{===================================================}
Fonction de ShortFileName(Const FileName: String): String
{===================================================}
Var
& nbsp & nbsp aTmp: Array[0..255] De Char
Begin
& nbsp & nbsp Si Pas FileExists(nom de fichier)
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Résultat := '
& nbsp & nbsp Fin
& nbsp & nbsp Else
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Si GetShortPathName(PChar (nom de fichier), aTmp, Sizeof (aTmp) - 1) = 0, Alors
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Résultat:= Nom de fichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Else
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Résultat:= StrPas (aTmp)
& ! & ! & ! & nbsp Fin
& nbsp & nbsp Fin
Fin
{==============================================}
Fonction de LongFileName(ShortName: String): String
{==============================================}
Var
& nbsp & nbsp SR: TSearchRec
Begin
& nbsp & nbsp Résultat := '
& nbsp & nbsp If (pos ('\\', ShortName) pos ('*', ShortName)
& ! & ! & ! & ! & ! & nbsp pos ('?', ShortName) <> 0) Ou Non FileExists(nom court)
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp { ignorer nom NetBIOS, le joker caractères et les noms de fichier non valides }
& ! & ! & ! & nbsp Sortie
& nbsp & nbsp Fin
& nbsp & nbsp Tandis que FindFirst(ShortName, faAnyFile, SR) = 0 Do
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp { partie suivante en tant que préfixe }
& ! & ! & ! & nbsp Result := '\' SR.Nom de Résultat
& ! & ! & ! & nbsp SysUtils.FindClose(SR) { le SysUtils, pas la WinProcs procédure! }
& ! & ! & ! & nbsp { directory (coupe avant '\') }
& ! & ! & ! & nbsp ShortName := ExtractFileDir (nom court)
& ! & ! & ! & nbsp Si la longueur (nom court) <= 2

& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Pause { ShortName contient la lettre de lecteur suivie par des ':' }
& ! & ! & ! & nbsp Fin
& nbsp & nbsp Fin
& nbsp & nbsp Résultat := ExtractFileDrive (nom court) Résultat
fin
{=========================================================}
Fonction de viande hachée(PathToMince: String InSpace: Integer): String
{=========================================================}
// 'C:\Program Files\Delphi\DDrop\TargetDemo\main.pas'
// 'C:\Program Files\..\main.pas'
Var
& nbsp & nbsp sl: TStringList
& nbsp & nbsp sHelp, sfichier: String
& nbsp & nbsp offices de propriété industrielle: Integer
Begin
& nbsp & nbsp sHelp := PathToMince
& nbsp & nbsp offices := Pos('\', sHelp)
& nbsp & nbsp Si iPos = 0, Alors
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Résultat := PathToMince
& nbsp & nbsp Fin
& nbsp & nbsp Else
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp sl := TStringList.Créer
& ! & ! & ! & nbsp // Décodage de la chaîne
& ! & ! & ! & nbsp Tandis que les offices de propriété industrielle <> 0 Do
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp sl.Ajouter(Copie(sHelp, 1, (iPos - 1)))
& ! & ! & ! & ! & ! & nbsp sHelp := Copy(sHelp, (offices de propriété industrielle 1), la Longueur(sHelp))
& ! & ! & ! & ! & ! & nbsp offices := Pos('\', sHelp)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Si sHelp < > '
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp sl.Ajouter(sHelp)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp // Encoder de la chaîne
& ! & ! & ! & nbsp sfichier := sl[sl.Count - 1]
& ! & ! & ! & nbsp sl.Supprimer(sl.Count - 1)
& ! & ! & ! & nbsp Résultat := '
& ! & ! & ! & nbsp While (Longueur(Résultat sfichier) < InSpace) Et (sl.Count <> 0) Faire
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Result := Result sl[0] '\'
& ! & ! & ! & ! & ! & nbsp sl.Supprimer(0)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Si sl.Count = 0 then
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Result := Result sfichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Else
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Résultat := Résultat '..\' sfichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp sl.Gratuit
& nbsp & nbsp Fin
Fin

Conclusion:
Fonction comme ShortFileName, LongFileName, et Émincer sont grand
les aides dans un RAD environnement.









A Long et a court de noms de fichiers


A Long et a court de noms de fichiers : Plusieurs milliers de conseils pour vous faciliter la vie.


Comment faire pour convertir les chemins des fichiers. Les noms de fichiers courts converti a Long nom de fichier, les noms de fichiers Longs pour les noms de fichiers Courts et Emincer les noms de fichiers.
Quand un nom de fichier est tombe sur une forme ou une ligne de commande comprend un
nom de fichier de l'OS en utilisant le format des noms de fichiers Courts (8.3).
La raison principale est qu'un nom de fichier Court format ne peut pas inclure un
espace-charte. Cela fonctionne tres bien depuis l'espace-charte de l'est
utilise comme un separateur de fichier.
Les trois fonctions suivantes vont vous aider convertir entre les
Court et a Long nom de fichier. J'ai ajoute a la viande hachee nom de fichier de la fonction
a l'aide de l'affichage d'un nom de fichier et le chemin d'acces.

{===================================================}
Fonction de ShortFileName(Const FileName: String): String
{===================================================}
Var
& nbsp & nbsp aTmp: Array[0..255] De Char
Begin
& nbsp & nbsp Si Pas FileExists(nom de fichier)
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Resultat := '
& nbsp & nbsp Fin
& nbsp & nbsp Else
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Si GetShortPathName(PChar (nom de fichier), aTmp, Sizeof (aTmp) - 1) = 0, Alors
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Resultat:= Nom de fichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Else
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Resultat:= StrPas (aTmp)
& ! & ! & ! & nbsp Fin
& nbsp & nbsp Fin
Fin
{==============================================}
Fonction de LongFileName(ShortName: String): String
{==============================================}
Var
& nbsp & nbsp SR: TSearchRec
Begin
& nbsp & nbsp Resultat := '
& nbsp & nbsp If (pos ('\\', ShortName) pos ('*', ShortName)
& ! & ! & ! & ! & ! & nbsp pos ('?', ShortName) <> 0) Ou Non FileExists(nom court)
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp { ignorer nom NetBIOS, le joker caracteres et les noms de fichier non valides }
& ! & ! & ! & nbsp Sortie
& nbsp & nbsp Fin
& nbsp & nbsp Tandis que FindFirst(ShortName, faAnyFile, SR) = 0 Do
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp { partie suivante en tant que prefixe }
& ! & ! & ! & nbsp Result := '\' SR.Nom de Resultat
& ! & ! & ! & nbsp SysUtils.FindClose(SR) { le SysUtils, pas la WinProcs procedure! }
& ! & ! & ! & nbsp { directory (coupe avant '\') }
& ! & ! & ! & nbsp ShortName := ExtractFileDir (nom court)
& ! & ! & ! & nbsp Si la longueur (nom court) <= 2

& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Pause { ShortName contient la lettre de lecteur suivie par des ':' }
& ! & ! & ! & nbsp Fin
& nbsp & nbsp Fin
& nbsp & nbsp Resultat := ExtractFileDrive (nom court) Resultat
fin
{=========================================================}
Fonction de viande hachee(PathToMince: String InSpace: Integer): String
{=========================================================}
// 'C:\Program Files\Delphi\DDrop\TargetDemo\main.pas'
// 'C:\Program Files\..\main.pas'
Var
& nbsp & nbsp sl: TStringList
& nbsp & nbsp sHelp, sfichier: String
& nbsp & nbsp offices de propriete industrielle: Integer
Begin
& nbsp & nbsp sHelp := PathToMince
& nbsp & nbsp offices := Pos('\', sHelp)
& nbsp & nbsp Si iPos = 0, Alors
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp Resultat := PathToMince
& nbsp & nbsp Fin
& nbsp & nbsp Else
& nbsp & nbsp Commencer
& ! & ! & ! & nbsp sl := TStringList.Creer
& ! & ! & ! & nbsp // Decodage de la chaîne
& ! & ! & ! & nbsp Tandis que les offices de propriete industrielle <> 0 Do
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp sl.Ajouter(Copie(sHelp, 1, (iPos - 1)))
& ! & ! & ! & ! & ! & nbsp sHelp := Copy(sHelp, (offices de propriete industrielle 1), la Longueur(sHelp))
& ! & ! & ! & ! & ! & nbsp offices := Pos('\', sHelp)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Si sHelp < > '
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp sl.Ajouter(sHelp)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp // Encoder de la chaîne
& ! & ! & ! & nbsp sfichier := sl[sl.Count - 1]
& ! & ! & ! & nbsp sl.Supprimer(sl.Count - 1)
& ! & ! & ! & nbsp Resultat := '
& ! & ! & ! & nbsp While (Longueur(Resultat sfichier) < InSpace) Et (sl.Count <> 0) Faire
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Result := Result sl[0] '\'
& ! & ! & ! & ! & ! & nbsp sl.Supprimer(0)
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Si sl.Count = 0 then
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Result := Result sfichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp Else
& ! & ! & ! & nbsp Commencer
& ! & ! & ! & ! & ! & nbsp Resultat := Resultat '..\' sfichier
& ! & ! & ! & nbsp Fin
& ! & ! & ! & nbsp sl.Gratuit
& nbsp & nbsp Fin
Fin

Conclusion:
Fonction comme ShortFileName, LongFileName, et Emincer sont grand
les aides dans un RAD environnement.


À Long et à court de noms de fichiers

À Long et à court de noms de fichiers : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation