Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-12-2006 13:14:07

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

[RESOLU] FtpSetCurrentDirectory ?

Est-il possible de remonter au répertoire parent avec "FtpSetCurrentDirectory"
merci d'avance

Hors ligne

 

#2 05-12-2006 13:52:54

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

as tu essayé avec ".." par exemple ?

Hors ligne

 

#3 05-12-2006 13:58:52

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

oui evidemment

Hors ligne

 

#4 05-12-2006 14:06:27

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

si tu as essayé ftpsetcurrentdirectory, tu as ptêt vu qu'il y avait ftpgetcurrentdirectory ?

si tu récupères le répertoire courant, tu supprimes la fin et ça te permet de retourner au répertoire
juste en dessous


si tu obtiens par exemple c:\windows\system32\ (je ne sais pas s'il y aura le \ ou / final)
avec une petite manipulation de chaine, tu obtiens facilement c:\windows\ !


et là, y'a plus qu'à faire un ftpsetcurrentdirectory !


t'en penses koi ?

Hors ligne

 

#5 05-12-2006 14:09:08

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

le soucis c'est que c'est en ftp alors je ne sais pas trop si ca va fonctionner comme cela aussi bien

Hors ligne

 

#6 05-12-2006 14:22:06

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

si ça fonctionne, post le petit bout de code qui va bien ! ;-)

Hors ligne

 

#7 05-12-2006 14:28:49

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

eu non a priori ca marche pas et je m'embete lol

Hors ligne

 

#8 05-12-2006 15:19:38

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

moi ça marche !


par exemple :

Code: pb

n_wininet iftp


string ls_toto

ls_toto = iftp.of_internetopen()
ls_toto = iftp.of_ftp_internetconnect("xx.xx.xx.xx","jdobosz","yyyyyyyy")

iftp.of_ftp_getcurrentdirectory(ls_toto)
messagebox("debug",ls_toto)
// me donne /home/jdobosz

// ps : j'ai la flemme de faire le bout de code qui donne la bonne chaine de caractères
// donc ...
iftp.of_ftp_setcurrentdirectory("/home")
iftp.of_ftp_getcurrentdirectory(ls_toto)
messagebox("debug",ls_toto)
// me donne /home

iftp.of_disconnect_session()

en utilisant ceci : http://www.topwizprogramming.com/freecode_ftpedit.html

Hors ligne

 

#9 05-12-2006 16:21:37

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

En fait ce que je faisai fonctionnais le seul soucis c'est que lorsque j'utilise FtpFindFirstFile pour le parcours d'un second dossier cela me renvoi 0 comme si il était vide.. donc je pensais que mon erreur venai de mon changement de dossier, FAUX ! ceci vient du fait que FtpFindFirstFile n'est possible qu'une seule fois par session ftp comme le dis microsoft :

FtpFindFirstFile is similar to the FindFirstFile function. Note, however, that only one FtpFindFirstFile can occur at a time within a given FTP session. The enumerations, therefore, are correlated with the FTP session handle. This is because the FTP protocol allows only a single directory enumeration per session.

Si quelqu'un connait donc une solution pour me renvoyer la liste des dossier ( jusque la je sais faire ) ainsi que les fichiers que chacun d'eux contient sur ftp, je suis preneur
merci

Hors ligne

 

#10 05-12-2006 16:44:05

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

essai un truc dans ce genre :

ai_level permet juste de faire un affichage hiérarchique dans la listbox

Code: pb

public function integer of_find (integer ai_level);
string ls

s_ftpdirlist dir_list[]
long ll, li
string ls_toto
ll = iftp.of_ftp_directory(dir_list)
iftp.of_ftp_getcurrentdirectory(ls_toto)

for li=1 to ll
  lb_1.additem(space(ai_level*2) + dir_list[li].s_filename)
  if (dir_list[li].ul_attributes = 16) then
    iftp.of_ftp_setcurrentdirectory(ls_toto+"/"+dir_list[li].s_filename)
    of_find(ai_level+1)
    yield()
    iftp.of_ftp_setcurrentdirectory(ls_toto)
  end if
next
  


return 0
end function

le test "if (dir_list[li].ul_attributes = 16) then" est pas top, il faudrait un ET logique et je sais pas faire sous PB !

Hors ligne

 

#11 05-12-2006 17:17:41

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

if (dir_list[li].ul_attributes = 16)

c'est pour vérifier si c'est bien un répertoire?

Hors ligne

 

#12 05-12-2006 17:23:28

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

oui, en gros

mais il faudrait plutot faire, si je ne me trompe pas,

Code: pb

 if (dir_list[li].ul_attributes [et binaire] 16) = 16 then

Hors ligne

 

#13 05-12-2006 20:49:39

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

lol ok ca pourra toujours servir je pense meme si c'est pas tout de suite:D
merci

Hors ligne

 

#14 06-12-2006 08:52:45

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

est-ce que le sujet est résolu ou il y a encore des points en suspend ?

Hors ligne

 

#15 06-12-2006 09:04:38

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

ben je me demande comment faire une boucle sur les fichier en évitant le FtpFindFirstFile qui n'est utilisable qu'une seule fois par session

Hors ligne

 

#16 06-12-2006 09:27:08

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

Pour en revenir sur ce FtpFindFirstFile, moi j'arrive à le lancer plusieurs fois dans une session ftp,
car j'appelle plusieurs fois la fonction of_directory dont voici le code

Code: pb

String  ls_null, ls_retval
Integer  li_file
Boolean  lb_morefiles = True

SetNull(ls_null)

lul_hFind = FtpFindFirstFile(iul_session, ls_null, lstr_FindData, &
          INTERNET_FLAG_RAW_DATA + &
          INTERNET_FLAG_NO_CACHE_WRITE + &
          INTERNET_FLAG_RELOAD, 0)

DO WHILE lb_morefiles
  li_file = li_file + 1
  // get file name
  astr_dirlist[li_file].s_FileName = String(lstr_FindData.cfilename)
  astr_dirlist[li_file].s_AltFileName = String(lstr_FindData.calternatefilename)
  If Trim(astr_dirlist[li_file].s_AltFileName) = "" Then
    astr_dirlist[li_file].s_AltFileName = astr_dirlist[li_file].s_FileName
  End If
  // get file date/time
  astr_dirlist[li_file].dt_CreationTime = &
    this.of_FileDateTimeToPB(lstr_FindData.ftCreationTime)
  astr_dirlist[li_file].dt_LastAccessTime = &
    this.of_FileDateTimeToPB(lstr_FindData.ftLastAccessTime)
  astr_dirlist[li_file].dt_LastWriteTime = &
    this.of_FileDateTimeToPB(lstr_FindData.ftLastWriteTime)
  // get file size
  astr_dirlist[li_file].db_FileSize = (lstr_FindData.nFileSizeHigh * (2.0 ^ 32)) + &
    lstr_FindData.nFileSizeLow
  // get file attributes
  astr_dirlist[li_file].ul_Attributes = lstr_FindData.dwFileAttributes
  // find next file
  lb_morefiles = InternetFindNextFile(lul_hFind, lstr_FindData)
LOOP

// close out directory handle
InternetCloseHandle(lul_hFind)

Return UpperBound(astr_dirlist[])

Elle fait appel à FtpFindFirstFile, qui renvoit un handle, ce handle est clos à la fin de la fonction.

Est-ce que toi aussi tu faisais le "InternetCloseHandle" avant d'appeler à nouveau le "FtpFindFirstFile" ?




Et je me demande si ce que tu as lu sur le site de Microsoft ne signifierait pas plutot que lorsque tu fais
une enumération, il faut la terminer avant d'en lancer une autre.

Hors ligne

 

#17 06-12-2006 09:29:24

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

non je ne faisais pas ca je vais essayer ca, peut etre pourrait ton clore un des deux sujets car ils se sont rejoint la !
merci encore!

MODIF :

Dans une premiere boucle j'appele deja le FtpFindFirstFile pour obetnir la liste de mes dossier et ensuite pour chaque dossier j'appelle une fonction qui contient aussi ce fameux FtpFindFirstFile pour récupérer la liste de mes fichiers.
Comment procèderai tu à ma place ? car si je ferme ma connexion je perds la liste de mes dossier au niveau supérieur et repars au début .. je ne sais pas si je suis bien clair.

merci d'avance

Dernière modification par thezerg (06-12-2006 10:56:16)

Hors ligne

 

#18 06-12-2006 14:28:27

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

toujours en utilisant l'objet n_wininet de ftpedit.zip,
j'ai modifié ma fonction of_find, en rajoutant en paramètre le nom du répertoire destination : as_dir,
ensuite, ça donne :

Code: pb

string ls
s_ftpdirlist dir_list[]
long ll, li
string ls_toto
ll = iftp.of_ftp_directory(dir_list)
//messagebox("debug",ls_toto)
iftp.of_ftp_getcurrentdirectory(ls_toto)
CreateDirectory(as_dir,0)

for li=1 to ll
  lb_1.additem(space(ai_level*2) + dir_list[li].s_filename)
  if (dir_list[li].ul_attributes = 16) then
    iftp.of_ftp_setcurrentdirectory(ls_toto+"/"+dir_list[li].s_filename)
    of_find(ai_level+1,as_dir + "\" + dir_list[li].s_filename)
    yield()
    iftp.of_ftp_setcurrentdirectory(ls_toto)
  else
    iftp.of_ftp_getfile(dir_list[li].s_filename,as_dir+"\"+dir_list[li].s_filename,false)
  end if
next
return 0

avant de lancer la fonction, se placer dans le bon répertoire du ftp avec of_ftp_setcurrentdirectory

et voilà, ça me récupère toute l'arborescence du ftp, ainsi que les fichiers !!!

la fonction de création de répertoire (local external function pour moi) :

Code: pb

FUNCTION boolean CreateDirectory(ref string pathname, int sa) LIBRARY "Kernel32.dll" alias for "CreateDirectoryA"

bon, cé pas ce qu'il y a de plus clean comme code, à toi de faire le reste ! ;-)

Hors ligne

 

#19 06-12-2006 15:52:59

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

merci beaucoup ca avance

je vais voir si je peux faire quelque chose de récursif pour les répertoires dans les répertoires merci

Hors ligne

 

#20 06-12-2006 15:55:06

jdobosz  
crazy geek
Award: jdbozc
Lieu: boulogne billancourt
Date d'inscription: 24-05-2006
Messages: 81
Pépites: 2,241
Banque: 2,700,351,746,124,543

Re: [RESOLU] FtpSetCurrentDirectory ?

ps : le script que je viens de poster est déjà récursif, of_find fait appel à of_find !!!

Hors ligne

 

#21 06-12-2006 15:56:18

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] FtpSetCurrentDirectory ?

ps : merci :D
on peut mettre en résolu les 2 sujets :D
enfin...

Dernière modification par thezerg (06-12-2006 16:28:54)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22