Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PATHTRUNCATE


Information sur la source

Catégorie :Fichier / Disque Classé sous : découper, chemin, arborescence Niveau : Débutant Date de création : 21/09/2005 Date de mise à jour : 22/09/2005 16:21:17 Vu / téléchargé: 2 567 / 176

Note :
5,25 / 10 - par 4 personnes
5,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
[Mis à jour]

Hello,

Voici ma deuxième publication, un découpeur de chemin.

Passer de c:\dossier\dossier2\ à :

c:\dossier\
c:\dossier\dossier2\

Ce petit code qui rendra peut être service, à été concu dans le but de traiter des fichiers texte (log) et non pas de lire directement une arborescence sur le disque.

Le code source affiché n'est que la fonction, pour une mise en situation vous pouvez télécharger le zip qui lui utilise l'explorateur pour extraire un chemin puis utiliser ma fonction "PathTruncate".

Voila, j'espère vous avoir mieux renseigné quant au pourquoi du comment de ce source.

@pluche

 

Source

  • Function PathTruncate(Source:String):TstringList;
  • Var
  • temp,strtemp,strbck:string;
  • pathdata,drivedata:string;
  • slcount,i,cpos:integer;
  • Output:Tstringlist;
  • delim:String;
  • begin
  • // Initialisation des variables
  • slcount:=0;
  • cpos:=0;
  • i:=0;
  • Output := TStringList.Create;
  • // Premier découpage (récupération 'x:\' ou '\\')
  • if copy(source,2,1) = ':' then begin
  • pathdata:=copy(source,4,length(source));
  • drivedata:=copy(source,0,3);
  • end else
  • if copy(source,2,1) = '\' then begin
  • pathdata:=copy(source,3,length(source));
  • drivedata:=copy(source,0,2);
  • end else
  • begin
  • Pathdata:=source;
  • Drivedata:='';
  • end;
  • temp:=pathdata;
  • strtemp:=pathdata;
  • //compter le nombre de '\' ou '/'
  • if Pos('\',pathdata) > 1 then delim:='\' else delim:='/';
  • repeat
  • temp:=copy(temp,pos(delim,temp)+1,length(temp));
  • inc(slcount);
  • until pos(delim,temp)=0;
  • //découpage
  • inc(i);
  • strtemp:=copy(strtemp,cpos,pos(delim,strtemp));
  • cpos:=length(strtemp)+1;
  • strbck:=strtemp;
  • Output.Add(drivedata+strtemp);
  • if i<slcount then
  • begin
  • repeat
  • inc(i);
  • strtemp:=pathdata;
  • strtemp:=copy(strtemp,cpos,length(strtemp));
  • strtemp:=copy(strtemp,0,pos(delim,strtemp));
  • cpos:=cpos+length(strtemp);
  • strbck:=strbck+strtemp;
  • strtemp:=strbck;
  • Output.Add(drivedata+strtemp);
  • until i=slcount;
  • end;
  • Result:=output;
  • end;
Function PathTruncate(Source:String):TstringList;

Var
temp,strtemp,strbck:string;
pathdata,drivedata:string;
slcount,i,cpos:integer;
Output:Tstringlist;
delim:String;

begin
// Initialisation des variables
slcount:=0;
cpos:=0;
i:=0;

Output := TStringList.Create;



// Premier découpage (récupération 'x:\' ou '\\')
if copy(source,2,1) = ':' then  begin
                                pathdata:=copy(source,4,length(source));
                                drivedata:=copy(source,0,3);
                                end else

if copy(source,2,1) = '\' then  begin
                                pathdata:=copy(source,3,length(source));
                                drivedata:=copy(source,0,2);
                                end else
                                    begin
                                    Pathdata:=source;
                                    Drivedata:='';
                                    end;


temp:=pathdata;
strtemp:=pathdata;


//compter le nombre de '\' ou '/'

if Pos('\',pathdata) > 1 then delim:='\' else delim:='/';

        repeat
        temp:=copy(temp,pos(delim,temp)+1,length(temp));
        inc(slcount);
        until pos(delim,temp)=0;

//découpage
inc(i);
strtemp:=copy(strtemp,cpos,pos(delim,strtemp));
cpos:=length(strtemp)+1;
strbck:=strtemp;


Output.Add(drivedata+strtemp);

if i<slcount then
        begin
              repeat
                inc(i);
                strtemp:=pathdata;
                strtemp:=copy(strtemp,cpos,length(strtemp));
                strtemp:=copy(strtemp,0,pos(delim,strtemp));
                cpos:=cpos+length(strtemp);
                strbck:=strbck+strtemp;
                strtemp:=strbck;

                Output.Add(drivedata+strtemp);
              until i=slcount;
        end;

     Result:=output;

end;

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 septembre 2005 23:16:41 :
-source ajouté (pour eviter de le télécharger)
22 septembre 2005 15:35:37 :
-nouvelle interface (juste dans le but de montrer le fonctionnement) -Procedure pathtruncate -> fonction pathtruncate
22 septembre 2005 15:37:13 :
-nouvelle interface (juste dans le but de montrer le fonctionnement) -Procedure pathtruncate -> fonction pathtruncate
22 septembre 2005 15:46:33 :
pb tranfert- tentative 3
22 septembre 2005 16:21:17 :
Bon ca y est maintenant...

Commentaires et avis

signaler à un administrateur
Commentaire de ACHPI32 le 21/09/2005 23:05:20

Merci de mettre la note... (lol)  

Laissez au moins un commentaire meme si c'est nul pour vous.

Si vous avez rencontré un problème avec le source merci d'indiquer les symptomes.

J'ajoute pour terminer que c'est un code "debutant" donc forcement non optimisé et il y a peut être (certainement) d'autres manières de proceder.

Voila

@pluche

signaler à un administrateur
Commentaire de DeltaFX le 21/09/2005 23:26:28

T'aurais pu gérer le cas d'un fichier réseau....

signaler à un administrateur
Commentaire de ACHPI32 le 21/09/2005 23:44:16

Salut,

En changeant 'c:\' par '\\' dans edit3 ca doit fonctionner.

@pluche

...je vais voir pour une nouvelle interface

signaler à un administrateur
Commentaire de MAURICIO le 22/09/2005 12:18:35

C' est peut etre une source de débutant mais ça ne t' empêche pas de nommer les compos !!!
Bon, sinon, il aurait été plus interessant d' établir quels sont les caractères qui interviennent dans le découpage du chemin: '\' et '/' ...
Ainsi, il suffit de chercher d' après ce "set" (qui pourra changer sans modifier une ligne de code) dans le chemin donné. Il sera possible de faire au moins 2 fois plus simple et 2 fois plus court.
A+

signaler à un administrateur
Commentaire de MAURICIO le 22/09/2005 15:02:02

On peux faire + simple et 10 fois plus court avec GetFileDir()

signaler à un administrateur
Commentaire de ACHPI32 le 22/09/2005 16:04:39

Voila une petite mise à jour, j'espère qu'a present l'utilité de ce programme sera mieux percue.

@pluche

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Comment récupérer le chemin d'un fichier dont l'extension ouvre une de mes applications [ par Ludolu ] J'explique : en gros, j'ai créé une nouvelle extension qui ouvre mon application et j'aimerais savoir comment on peut faire pour obtenir le chemin du lancer une appli sans bonnaître son chemin [ par Sonia ] Bonjour ! Aurais-tu la gentillesse de me décrire le code qui permet de lancer un programme dont je ne connaîs pas le chemin sur les ordinateurs qui ut Chemin d'accès d'un élément d'un ShellListView [ par PierreP ] je recherche comment obtenir le chemin d'accès d'un élément sélectionné dans un ShellListViewcela est très important, merci d'avance :) Récuperer le chemin relatif a un nom de partage [ par dabroke ] Salut!Comment récupérer un chemin a partir d'un nom de partage?Exemple: J'ai un nom de partage 'PARTAGE' qui correspond a 'c:\Rep1\Rep2'Comment récupé Récuperer le chemin relatif a un nom de partage [ par dabroke ] Salut!Comment récupérer un chemin a partir d'un nom de partage?Exemple: J'ai un nom de partage 'PARTAGE' qui correspond a 'c:\Rep1\Rep2'Comment récupé Récuperer le chemin relatif a un nom de partage [ par dabroke ] Salut!Comment récupérer un chemin a partir d'un nom de partage?Exemple: J'ai un nom de partage 'PARTAGE' qui correspond a 'c:\Rep1\Rep2'Comment récupé URGENT!!!!! CHEMIN UNC [ par dabroke ] Salut,J'ai vraiment besoin d'aide!!!!Voilà mon probleme, j'ai le nom de mon serveur (pour l'exemple:SERVEUR) , j'ai un chemin d'un fichier en local su URGENT!!!!! CHEMIN UNC [ par dabroke ] Salut,J'ai vraiment besoin d'aide!!!!Voilà mon probleme, j'ai le nom de mon serveur (pour l'exemple:SERVEUR) , j'ai un chemin d'un fichier en local su URGENT!!!!! CHEMIN UNC [ par dabroke ] Salut,J'ai vraiment besoin d'aide!!!!Voilà mon probleme, j'ai le nom de mon serveur (pour l'exemple:SERVEUR) , j'ai un chemin d'un fichier en local su URGENT!!!!! CHEMIN UNC [ par dabroke ] Salut,J'ai vraiment besoin d'aide!!!!Voilà mon probleme, j'ai le nom de mon serveur (pour l'exemple:SERVEUR) , j'ai un chemin d'un fichier en local su


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.