FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Place libre sur un disque - Page 2 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Place libre sur un disque - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Place libre sur un disque - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Place libre sur un disque - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Place libre sur un disque - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Place libre sur un disque - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Place libre sur un disque - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Place libre sur un disque - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Place libre sur un disque - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Place libre sur un disque - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Place libre sur un disque - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Place libre sur un disque - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Place libre sur un disque - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Place libre sur un disque - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Place libre sur un disque - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Place libre sur un disque

Aller en bas 
+2
Yannick
JL35
6 participants
Aller à la page : Précédent  1, 2
AuteurMessage
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyJeu 8 Oct 2015 - 22:50

Merci cosmos pour le retour.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyJeu 8 Oct 2015 - 23:26

Ça marche !
La bonne vieille programmation BATCH !
Ne dit-on pas que « c’est dans les vieilles marmites qu’on fait les meilleures soupes » ?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyJeu 8 Oct 2015 - 23:30

C'est à croire ! j'ai voulu utiliser des trucs plus sophistiqués, et puis c'est le bon vieux batch qui fait l'affaire.
Bon, j'ôte la marmite du feu, et puis... Sleep
Bonne nuit papydall et les autres qui veillent encore...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyJeu 8 Oct 2015 - 23:54

Bonne soupe!  Heu ... C'est-à-dire ... Bonne nuit!
Quant à moi, c'est trop tôt pour boire ma tasse de lait bien chaud avant d'aller au lit Laughing
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
bignono

bignono


Nombre de messages : 1127
Age : 67
Localisation : Val de Marne
Date d'inscription : 13/11/2011

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 13:01

Bonjour à tous
Avec disk_exist,  l'erreur n'est pas due à une prise USB mais si vous avez une imprimante connectée avec un lecteur de carte XD MMC SD... Etc...
Je crois que Jack n,à pas prévu ce cas quand il a développé cette commande.
À+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 13:09

Bonjour bignono,
C'est mon cas, et bien sûr tu dois avoir raison, en tout cas c'est inutilisable en l'état pour ce que je voulais faire, s'il y a des cas d'erreur qui sont bloquants.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 13:48

Et la fonction  GetVolumeList de KGF.dll (section "gestion de fichiers") ne fait pas l'affaire ? Ca me semblait assez complet...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 15:11

Certes Klaus, cette fonction est très complète et largement suffisante, mais je cherchais à faire quelque chose de plus universel et plus transportable, sans ressources externes.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 15:19

Alors, je ne peux pas vraiment aider. J'aurais bien collé ici le code Delphi de cette fonction, mais elle est complexe et fait appel à plusieurs API et des traitements binaires d'informations retournées par ces API. Donc, non utilisable en 100 % Panoramic.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 16:33

Merci Klaus, mais je crois le problème résolu avec le dernier code que j'ai posté: je récupère la liste des volumes utiles (c'était ça le problème principal) avec un script dans un .bat, ça marche.
Pour les caractéristiques de chaque volume c'est plus facile, avec les fonctions Panoramic Disk_Kilo_Size et Disk_Kilo_Free suggérées par bignono.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 16:45

Très bien. Mais, juste pour approfondir la chose; dans Kernel32.dll, tu as la fonctioin GetLogicalDrives. Elle ne prend pas de paramètres et retourne une valeur de type integer. Donc, facile à appeler depuis Panoramic. Et la valeur retournée est un masque binaire où seuls les 26 premiers bits sont définis: bits 0 à 25. Si un bit est "1", le drive correspondant est présent et disponible. Si le bit est "0", le drive n'est pas présent. La numérotation se lit comme suit, avec des valeurs décimales pour représenter les bits:
1 = A: (bit 0)
2 = B: (bit 1)
4 = C: (bit 2)
8 = D: (bit 3)
...
2^^25 = Z: (bit 4)

Tu peux l'utiliser comme suit:
Code:
dim drives%, i%, mask%
dll_on "Kernel32.dll"
memo 1 : full_space 1
drives% = dll_call0("GetLogicalDrives")
item_add 1,"dirves% = "+hex$(drives%)+"(hex)"
item_add 1,""
mask% = 1
for i%=1 to 25
  if bin_and(drives%,mask%)>0
    item_add 1,chr$(64+i%)+": présent"
  else
    item_add 1,chr$(64+i%)+":"
  end_if
  mask% = mask% * 2
next i%
end

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 17:06

Tu peux aller plus loin avec un second API GetDriveTypeA:
Code:
dim drives%, i%, mask%, typ$, type%, drv$, ad1%, ad2%
dll_on "Kernel32.dll"
memo 1 : full_space 1
drives% = dll_call0("GetLogicalDrives")
item_add 1,"dirves% = "+hex$(drives%)+"(hex)"
item_add 1,""
mask% = 1

for i%=1 to 25
  if bin_and(drives%,mask%)>0
    drv$ = chr$(64+i%)+":"
    ad1% = adr(drv$)
    poke adr(ad2%),peek(ad1%)
    poke adr(ad2%+1),peek(ad1%+1)
    poke adr(ad2%+2),peek(ad1%+2)
    poke adr(ad2%+3),peek(ad1%+3)
    type% = dll_call1("GetDriveTypeA",ad2%)
    select type%
      case 0
        typ$ = "inconnu"
      case 1
        typ$ = "pas de volume chargé"
      case 2
        typ$ = "amovible"
      case 3
        typ$ = "fixe/flash"
      case 4
        typ$ = "réseau"
      case 5
        typ$ = "CD-Rom"
      case 6
        typ$ = "mémoire"
    end_select
    item_add 1,chr$(64+i%)+": présent "+typ$
  else
    item_add 1,chr$(64+i%)+":"
  end_if
  mask% = mask% * 2
next i%
end
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 17:31

Et, avec un autre API GetDiskFreeSpaceA, tu obtiens ceci:
Code:
dim drives%, i%, mask%, typ$, type%, drv$, ad1%, ad2%, res%
dim SectorsPerCluster%,BytesPerSector%,NumberOfFreeClusters%,TotalNumberOfClusters%
dll_on "Kernel32.dll"
memo 1 : full_space 1
drives% = dll_call0("GetLogicalDrives")
item_add 1,"dirves% = "+hex$(drives%)+"(hex)"
item_add 1,""
mask% = 1

for i%=1 to 25
  if bin_and(drives%,mask%)>0
    drv$ = chr$(64+i%)+":"
    ad1% = adr(drv$)
    poke adr(ad2%),peek(ad1%)
    poke adr(ad2%+1),peek(ad1%+1)
    poke adr(ad2%+2),peek(ad1%+2)
    poke adr(ad2%+3),peek(ad1%+3)
    type% = dll_call1("GetDriveTypeA",ad2%)
    select type%
      case 0
        typ$ = "inconnu"
      case 1
        typ$ = "pas de volume chargé"
      case 2
        typ$ = "amovible"
      case 3
        typ$ = "fixe/flash"
      case 4
        typ$ = "réseau"
      case 5
        typ$ = "CD-Rom"
      case 6
        typ$ = "mémoire"
    end_select
    
    if type%>1
      res% = dll_call5("GetDiskFreeSpaceA",ad2%,adr(SectorsPerCluster%),adr(BytesPerSector%),adr(NumberOfFreeClusters%),adr(TotalNumberOfClusters%))
      if res%=0
        typ$ = typ$ + "  "+"non opérationnel"
      else
        typ$ = typ$ + "  "+str$(NumberOfFreeClusters%)+" clusters libres"
      end_if
    end_if
    
    item_add 1,chr$(64+i%)+": présent "+typ$
  else
    item_add 1,chr$(64+i%)+":"
  end_if
  mask% = mask% * 2
next i%
end
Tu as ainsi le nombre de clusters libres (affichés), ainsi que le nombre de secteurs par cluster et le nombre de bytes par cluster. Je te laisse faire les multiplications et divisions pour avoir le nombre de kilo-octets...

Tu as ainsi une solution complète, 100 % Panoramic, juste avec Kernel32.dll qui est disponible partout. Si tu veux obtenir le nom logique du disque ou éventuellement le label d'un disque amovible, c'est plus complexe, car Panoramic ne sait pas gérer le retour d'une chaîne de caractères à partir d'une DLL.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 18:01

Merci pour tout ceci klaus, mais si tu regardes mon code d'hier à 11h18 j'appelais bien Kernel.dll fonction GetLogicalDrive et je l'exploitais comme tu as dit, ça me convenait très bien, mais ça ne marchait pas pour certains, alors j'ai cherché autre chose.
Il y a aussi des appels à fsutil qui peuvent résoudre le problème, mais il faut être en mode administrateur, sinon ça bloque.
(peut-être aussi pour kernel32.dll ?).
En tout cas je vais laisser en l'état, c'était juste pour un petit utilitaire à consulter vite fait, sans prétentions.
Et pour les tailles totale et occupée, les fonctions Panoramic conviennent bien.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 19:20

Oui, tu utilises bien GetLogicalDrives pour avoir la liste des drives. Mais après cela, tu fermes la DLL et tu demandes le reste des informations à Panoramic. Or, même si certains drives existent, les fonctions Panoramic ne sont pas forcément faites pour travailler dessus. Regarde mon dernier code: tout est fait avec des API et en traitant les erreurs qui arrivent...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 EmptyVen 9 Oct 2015 - 19:34

Oui, mais si tu regardes le code d'hier à 21h05, les disques qui ne sont pas accessibles sont automatiquement éliminés par le traitement qui est fait ensuite (utilisation de la fonction VOL de ms-dos).
On élimine ainsi les "Le périphérique n'est pas prêt" et les "Accès refusé", on ne garde que ceux qui sont reconnus par 'VOL'.
Revenir en haut Aller en bas
Contenu sponsorisé





Place libre sur un disque - Page 2 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque - Page 2 Empty

Revenir en haut Aller en bas
 
Place libre sur un disque
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Défragmentation du disque dur
» Un logiciel vraiment gratuit, compatible Word et Excel
» Rechercher un fichier donné dans tout le disque C:
» Espace libre de mise en ligne de procédures
» END à la place de END_SUB

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: