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 Emptypar Pedro Sam 23 Nov 2024 - 15:50

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

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

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

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

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

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

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

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

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

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

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

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

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

» fichier.exe
Place libre sur un disque 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 : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 Place libre sur un disque

Aller en bas 
+2
Yannick
JL35
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35




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

Place libre sur un disque Empty
MessageSujet: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 16:21

Une toute pitite sub, sans commentaires, tout est dans le titre:
Code:
Diskfree("C:")
message "disque C: "+clipboard_string_paste$+" M. libres"
END

SUB Diskfree(v$)
' Place disponible sur le volume v$ (de la forme 'X:') -> en Mb dans le clipboard
DIM_LOCAL a$
EXECUTE_WAIT "cmd.exe /c DIR /-C "+v$+" | findstr "+CHR$(34)+"libres"+CHR$(34)+" | clip"
a$ = TRIM$(MID$(CLIPBOARD_STRING_PASTE$,24,16))
CLIPBOARD_STRING_COPY LEFT$(a$,LEN(a$)-6)
END_SUB
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Place libre sur un disque Empty
MessageSujet: re   Place libre sur un disque EmptyMer 7 Oct 2015 - 16:25

Chouette cette Sub !

Tu connais la démarche pour le site... Laughing

Ps : Tu as un peu de temps, j' ai pas encore trouvé l' erreur
qui bug la page "Procédures" du site.
Revenir en haut Aller en bas
bignono

bignono


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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 17:15

Bonjour JL35,
Panoramic dispose d'une instruction pour faire cela. Il suffit après de mettre en forme le résultat.
Code:
message str$(disk_kilo_free("c"))+" octets libres sur C:\"
A+
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 18:14

Mince alors, je l'avais complètement zappée celle-ci !
Merci bignono pour ce rappel, et du coup ma petite sub est nulle et non avenue.

@ygeronimi, prends ton temps, je n'en ai plus besoin ! Very Happy
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 18:30

Je dirais mieux :
DISK_KILO_FREE(D)  retourne une valeur en KO !
C’est plus parlant qu’en MO !

@Bignono
Code:
 message str$(disk_kilo_free("c"))+" kilo-octets libres sur C:\"
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Place libre sur un disque Empty
MessageSujet: re   Place libre sur un disque EmptyMer 7 Oct 2015 - 20:18

@ JL35

Je vais en avoir besoin.
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 20:55

Pas de ma sub en tout cas mais de la ligne de bignono (+papydall) qui fait ça en encore plus simple, une seule instruction !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Place libre sur un disque Empty
MessageSujet: re   Place libre sur un disque EmptyMer 7 Oct 2015 - 21:14

Moi je parlais du temps... drunken

Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 21:48

Ça c'est plus dur à trouver ! Smile
Et comme le temps c'est de l'argent et que l'argent ne fait pas le bonheur... bon, j'arrête là.
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyMer 7 Oct 2015 - 22:56

Code:
message "taille du disque C : " + str$(disk_kilo_size("C")) + " kilo-octets"
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 11:18

Pour me rattraper, et suite à l'excellente suggestion de l'ami bignono, une petite sub qui donne les caractéristiques de tous les volumes connectés (disques, clés...): nom, volume total, volume disponible, pourcentage disponible.
Les volumes sont donnés en méga-octets. Avec un exemple d'appel:
Code:
DIM a$,b$,k%,r%

WIDTH 0,400: HEIGHT 0,100: BORDER_SMALL 0: CAPTION 0," - VOLUMES  MONTÉS -"
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10
GRID 1: WIDTH 1,315: HEIGHT 1,150: GRID_COLUMN 1,5: GRID_ROW 1,2
GRID_ONE_COLUMN_WIDTH 1,1,24: GRID_ONE_COLUMN_WIDTH 1,2,117: GRID_ONE_COLUMN_WIDTH 1,5,36
GRID_ROW_HEIGHT 1,19
GRID_WRITE 1,1,2,"Volume": GRID_WRITE 1,1,3,"Total": GRID_WRITE 1,1,4,"Libre"
GRID_WRITE 1,1,5,"%"
WIDTH 0,WIDTH(1)+20

Diskinfo()
a$ = clipboard_string_paste$
k% = INSTR(a$,CHR$(13))
r% = 1
WHILE k% > 0
    r% = r%+1: b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
    GRID_WRITE 1,r%,1,LEFT$(b$,2): k% = INSTR(b$,";")
    GRID_WRITE 1,r%,2,RIGHT_POS$(LEFT$(b$,k%-1),4): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,3,LEFT$(b$,k%-1): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,4,LEFT$(b$,k%-1): GRID_WRITE 1,r%,5,RIGHT_POS$(b$,k%+1)
    k% = INSTR(a$,CHR$(13))
END_WHILE
GRID_ROW 1,r%: HEIGHT 1,r%*21: HEIGHT 0,HEIGHT(1)+38
END
' ==============================================================================
SUB Diskinfo()
' Volumes actifs + taille totale + taille disponible (en Mo) -> clipboard
' 1 ligne par volume, de la forme
'    X: NomVolume;Taille_totale;Taille_libre;Pourcentage_libre
DIM_LOCAL ret%,lect%,drv$,mm%,i%,k%,v$,a$,b$,t%,l%,p%
DLL_ON "kernel32.dll": ret% = DLL_CALL0("GetLogicalDrives")
drv$ = ""
FOR lect% = 0 TO 25
    IF BIN_AND(ret%,POWER(2,lect%))>0 THEN drv$=drv$+CHR$(65+lect%)+":"+CHR$(13)+CHR$(10)
NEXT lect%
DLL_OFF
mm% = 950: MEMO mm%: HIDE mm%
item_add mm%,drv$
b$ = ""
FOR i% = 1 TO COUNT(mm%)
    v$ = ITEM_READ$(mm%,i%)
    EXECUTE_WAIT "cmd.exe /c VOL "+v$+" | clip"
    a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"s'appelle")
    IF k%>0 AND v$<>""
        a$ = RIGHT_POS$(a$,k%+10): k% = INSTR(a$,CHR$(13))
        a$ = v$+" "+LEFT$(a$,k%-1): ' lettre + nom du volume
        t% = DISK_KILO_SIZE(LEFT$(v$,1))/1000: ' taille totale en Moctets
        l% = DISK_KILO_FREE(LEFT$(v$,1))/1000: ' taille libre en Moctets
        p% = 100*l%/t%: ' pourcentage disponible
        b$ = b$+a$+";"+STR$(t%)+";"+STR$(l%)+";"+STR$(p%)+"% "+CHR$(13)+CHR$(10)
    END_IF
NEXT i%
CLIPBOARD_STRING_COPY b$
END_SUB
' ==============================================================================
ce qui donne:
Place libre sur un disque Volume10
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 11:27

Là je reconnais de l'excellent JL35 Wink
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 13:37

Merci Jicehel, ça peut faire un petit exécutable utilitaire à mettre sur le bureau (comme j'ai fait pour moi).
J'ai changé le
CAPTION 0," - VOLUMES  MONTÉS -" (ligne 4)
par
Code:
CAPTION 0,"         -  VOLUMES  MONTÉS  -   (tailles en Mb)  -"
pour que ce soit moins ambigü.
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 14:00

Chez moi, ça ne donne que ça et rien de plus!

Place libre sur un disque 1_bmp13


A croire que je n'ai plus de volume!
Je réclame mes volumes affraid
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 14:41

Manifestement, la sub ne te renvoie rien du tout ! scratch tu es sûr que tu as des volumes ??
Tu peux déjà regarder si la dll te renvoie bien la liste des volumes connectés dans drv$ (une ligne par volume) en faisant dans la sub un message drv$ après le dll_off, pour voir... tout se passe comme si elle ne te renvoyait rien du tout.

Ou mieux, tester le code retour ret% de la fonction GetLogicalDrives de Kernel32.dll
C'est une valeur sur 32 bits, chaque bit de 0 à 25 représentant un volume connecté:
bit 0 = 1: volume A:
bit 1 = 1 : volume B:
...
bit 25 = 1: volume Z:
Revenir en haut Aller en bas
Invité
Invité




Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 15:14

Excuses-moi de te répondre (suite à un fâcheux accident que je n'ai pas compris), au vu du résultat de Papydall.

J'ai essayé le programme qui ne nécessite pas de réglage particulier (je ne peux pas rester).
Le retour de la sub est : D avec recovery , E: HP_TOOL, et Z:RAM.
Il n'y a rien en ce qui concerne C:. Manifestement quelque chose ne va pas, et je ne suis pas sur que tu en sois la cause.
Là je pars.
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 15:28

Bon, manifestement il doit y avoir un problème avec kernel32.dll, chez moi ça marche très bien, il faudrait regarder juste derrière ce que renvoie la dll, comme je disais plus haut.
Je ne peux pas en dire plus sans avoir les éléments en main.

Et je m'aperçois qu'il y a une fonction de l'incontournable KGF.dll: GetVolumeList qui donne tous ces renseignements sur les volumes connectés.
Revenir en haut Aller en bas
bignono

bignono


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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 17:04

Bonjour JL35

J'ai la même chose que papydall
Mais au lieu d'utiliser une dll pour trouver les disques installés, il y a aussi un instruction panoramic pour ça:
Code:
dim i
for i=65 to 90
      if disk_exists(chr$(i))=1 then print chr$(i);":\"
next i
A+
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 17:35

Salut bignono,
Je ne vois pas bien pourquoi ça ne marche pas chez vous, probablement un problème d'accès à kernel32.dll, j"ai également utilisé la commande fsutil, bien pratique, mais pour celle-là il faut avoir les droits d'administrateur...

Tu as raison, je vais voir pour utiliser la commande en pur Panoramic.
Et merci à toi pour tes judicieuses remarques !

PS il me semble que j'avais déjà essayé le Dir_Exists, malheureusement pour certains disques il s'affiche une erreur:
Place libre sur un disque Erreur10
Revenir en haut Aller en bas
Invité
Invité




Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 18:44

Je viens de jeter un oeil sur ton programme JL35. Le problème pour "C" pour moi, est qu'il renvoi un message en ligne 44: le volume dans le lecteur C n'a pas de nom etc..., et k% = 0.

Donc il te faut revoir ceci avec le rapport donné par le programme, c'est à dire: gérer les disques qui n'ont pas de nom. La ligne suivante du message, il donne le nom de série.
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 18:55

Bien vu, Cosmos70 !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 19:05

Je pense avoir posté un code qui affiche la liste des lecteurs disponibles sur le PC.
Mais je ne me rappelle plus où et quand.

Le revoilà

Code:

rem ============================================================================
rem               GetLogicalDrives
rem ============================================================================
rem Déterminer la liste des lecteurs logiques disponibles sur le PC.
rem Un appel à la fonction GetLogicalDrives de la kernel.dll renvoie une valeur
rem décimale.
rem Cette valeur décimale correspond à une valeur en binaire sur 32 bits.
rem Le bit le moins significatif (le 1er bit à partir de la droite) correspond
rem au lecteur A:\, le bit suivant correspond au lecteur B:\ et aisi de suite.
rem Le 26ème bit correspond au lecteur Z:\.
rem Les bits de 27 à 32 sont forcement à zéro.
rem ----------------------------------------------------------------------------
rem Pour déterminer quels sont les bits à 1, on utilse la fonction BIN_AND(v1,v2).
rem Avec v1 = la valeur de retour de GetLogicalDrives
rem et   v2 = 2 à la puissance le numéro du bit à tester.
rem Si le résultat de BIN_AND(v1,v2) est positif, cela prouve que le bit à tester
rem est mis à 1 et que le lecteur qui lui correspond existe.
rem ============================================================================
dim ret%,lecteur,driv$
width 0,1000
alpha 1 : left 1,10   : font_name 1,"tahoma" : font_size 1,16 : font_color 1,0,0,255
alpha 2 : left 2,500  : font_name 2,"tahoma" : font_size 2,16 : font_color 2,0,0,255
dll_on "kernel32.dll"
ret% = dll_call0("GetLogicalDrives")
driv$ = "Liste des lecteurs logiques disponibles sur le PC."+chr$(13)+ chr$(13)
driv$ = driv$ + "Par GetLogicalDrives de kernell.dll" + chr$(13)+chr$(13)
for lecteur = 0 to 25
    if bin_and(ret%,power(2,lecteur))> 0
       driv$ =  driv$ + string$(30," ") +chr$(65+lecteur) + ":\ existe " + chr$(13)
    end_if
next lecteur
caption 1,driv$

dll_off
rem ============================================================================

driv$ = "Liste des lecteurs logiques disponibles sur le PC."+chr$(13)+ chr$(13)
driv$ = driv$ + "Par la fonction disk_exists de Panoramic" + chr$(13) + chr$(13)
for lecteur = 0 to 25
    if disk_exists (chr$(65+lecteur)) > 0
        driv$ =  driv$ + string$(30," ") +chr$(65+lecteur) + ":\ existe " + chr$(13)
    end_if
next lecteur
caption 2,driv$
rem ============================================================================
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 Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 20:05

J'ai essayé avec le Disk_Exists
Code:
DIM a$,b$,k%,r%

WIDTH 0,400: HEIGHT 0,100: BORDER_SMALL 0: CAPTION 0," - VOLUMES  MONTÉS -"
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10: COLOR 0,255,0,0
GRID 1: TOP 1,2: LEFT 1,2: WIDTH 1,315: HEIGHT 1,150: GRID_COLUMN 1,5: GRID_ROW 1,2
GRID_ONE_COLUMN_WIDTH 1,1,24: GRID_ONE_COLUMN_WIDTH 1,2,117: GRID_ONE_COLUMN_WIDTH 1,5,36
GRID_ROW_HEIGHT 1,19
GRID_WRITE 1,1,2,"Volume": GRID_WRITE 1,1,3,"Total": GRID_WRITE 1,1,4,"Libre"
GRID_WRITE 1,1,5,"%"
WIDTH 0,WIDTH(1)+20

Diskinfo()
a$ = CLIPBOARD_STRING_PASTE$
k% = INSTR(a$,CHR$(13))
r% = 1
WHILE k% > 0
    r% = r%+1: b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
    GRID_WRITE 1,r%,1,LEFT$(b$,2): k% = INSTR(b$,";")
    GRID_WRITE 1,r%,2,RIGHT_POS$(LEFT$(b$,k%-1),4): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,3,LEFT$(b$,k%-1): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,4,LEFT$(b$,k%-1): GRID_WRITE 1,r%,5,RIGHT_POS$(b$,k%+1)
    k% = INSTR(a$,CHR$(13))
END_WHILE
GRID_ROW 1,r%: HEIGHT 1,r%*21: HEIGHT 0,HEIGHT(1)+38
END
' ==============================================================================
SUB Diskinfo()
' Volumes actifs + taille totale + taille disponible (en Mo) -> clipboard
' 1 ligne par volume, de la forme
'    X: NomVolume;Taille_totale;Taille_libre;Pourcentage_libre
DIM_LOCAL mm%,i%,k%,v$,a$,b$,t%,l%,p%
mm% = 950: MEMO mm%: HIDE mm%
FOR i% = 0 TO 25
    IF DISK_EXISTS(CHR$(65+i%))>0 THEN ITEM_ADD mm%,CHR$(65+i%)+":"
NEXT i%
b$ = ""
FOR i% = 1 TO COUNT(mm%)
    v$ = ITEM_READ$(mm%,i%)
    EXECUTE_WAIT "cmd.exe /c VOL "+v$+" | clip"
    a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"s'appelle")
    IF k%>0 AND v$<>""
        a$ = RIGHT_POS$(a$,k%+10): k% = INSTR(a$,CHR$(13))
        a$ = v$+" "+LEFT$(a$,k%-1): ' lettre + nom du volume
        t% = DISK_KILO_SIZE(LEFT$(v$,1))/1000: ' taille totale en Moctets
        l% = DISK_KILO_FREE(LEFT$(v$,1))/1000: ' taille libre en Moctets
        p% = 100*l%/t%: ' pourcentage disponible
        b$ = b$+a$+";"+STR$(t%)+";"+STR$(l%)+";"+STR$(p%)+"% "+CHR$(13)+CHR$(10)
    END_IF
NEXT i%
CLIPBOARD_STRING_COPY b$
DELETE mm%
END_SUB
' ==============================================================================
mais j'ai toujours l'erreur mentionnée plus haut qui ne doit intervenir que dans certaines configurations (prises usb ?):
'Il n'y a pas de disque dans le lecteur. Insérez un disque dans le lecteur...'.

Pour ce qui concerne les volumes sans nom (Cosmos) effectivement il doit y avoir un problème, je n'ai pas le cas chez moi, je vais regarder.

Avec Kernel32.dll, et pour traiter le cas des volumes sans nom:
Code:
DIM a$,b$,k%,r%

WIDTH 0,400: HEIGHT 0,100: BORDER_SMALL 0
CAPTION 0,"         -  VOLUMES  MONTÉS  -   (tailles en Mb)  -"
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10: COLOR 0,255,0,0
GRID 1: TOP 1,2: LEFT 1,2: WIDTH 1,315: HEIGHT 1,150: GRID_COLUMN 1,5: GRID_ROW 1,2
GRID_ONE_COLUMN_WIDTH 1,1,24: GRID_ONE_COLUMN_WIDTH 1,2,117: GRID_ONE_COLUMN_WIDTH 1,5,36
GRID_ROW_HEIGHT 1,19
GRID_WRITE 1,1,2,"Volume": GRID_WRITE 1,1,3,"Total": GRID_WRITE 1,1,4,"Libre"
GRID_WRITE 1,1,5,"%"
WIDTH 0,WIDTH(1)+20

Diskinfo()
a$ = clipboard_string_paste$
k% = INSTR(a$,CHR$(13))
r% = 1
WHILE k% > 0
    r% = r%+1: b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
    GRID_WRITE 1,r%,1,LEFT$(b$,2): k% = INSTR(b$,";")
    GRID_WRITE 1,r%,2,RIGHT_POS$(LEFT$(b$,k%-1),4): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,3,LEFT$(b$,k%-1): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,4,LEFT$(b$,k%-1): GRID_WRITE 1,r%,5,RIGHT_POS$(b$,k%+1)
    k% = INSTR(a$,CHR$(13))
END_WHILE
GRID_ROW 1,r%: HEIGHT 1,r%*21: HEIGHT 0,HEIGHT(1)+38
END
' ==============================================================================
SUB Diskinfo()
' Volumes actifs + taille totale + taille disponible (en Mo) -> clipboard
' 1 ligne par volume, de la forme
'    X: NomVolume;Taille_totale;Taille_libre;Pourcentage_libre
DIM_LOCAL ret%,lect%,drv$,mm%,nn%,i%,k%,v$,a$,b$,t%,l%,p%
DLL_ON "kernel32.dll": ret% = DLL_CALL0("GetLogicalDrives")
drv$ = ""
FOR lect% = 0 TO 25
    IF BIN_AND(ret%,POWER(2,lect%))>0 THEN drv$=drv$+CHR$(65+lect%)+":"+CHR$(13)+CHR$(10)
NEXT lect%
DLL_OFF
mm% = 950: MEMO mm%: HIDE mm%
item_add mm%,drv$
b$ = ""
FOR i% = 1 TO COUNT(mm%)
    v$ = ITEM_READ$(mm%,i%)
    EXECUTE_WAIT "cmd.exe /c VOL "+v$+" | clip"
    a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"s'appelle"): nn% = 0
    IF k% = 0 THEN k% = INSTR(a$,"n'a pas de nom"): IF k%>0 THEN nn% = 1
    IF k%>0 AND v$<>""
        a$ = RIGHT_POS$(a$,k%+10): k% = INSTR(a$,CHR$(13))
        IF nn% = 0
            a$ = v$+" "+LEFT$(a$,k%-1): ' lettre + nom du volume
        ELSE
            a$ = v$+" (pas de nom)"
        END_IF
        t% = DISK_KILO_SIZE(LEFT$(v$,1))/1000: ' taille totale en Moctets
        l% = DISK_KILO_FREE(LEFT$(v$,1))/1000: ' taille libre en Moctets
        p% = 100*l%/t%: ' pourcentage disponible
        b$ = b$+a$+";"+STR$(t%)+";"+STR$(l%)+";"+STR$(p%)+"% "+CHR$(13)+CHR$(10)
    END_IF
NEXT i%
CLIPBOARD_STRING_COPY b$
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
JL35




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

Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 21:29

Et maintenant, une version qui ne fait appel ni à Dir_Exists, ni à Kernel32.dll, mais à un script dans un fichier batch, ça devrait marcher pour tout le monde cette fois-ci ? :
Code:
DIM a$,b$,k%,r%

WIDTH 0,400: HEIGHT 0,100: BORDER_SMALL 0
CAPTION 0,"        -  VOLUMES  MONTÉS  -  (tailles en Mb)  -"
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,10: COLOR 0,255,0,0
GRID 1: TOP 1,2: LEFT 1,2: WIDTH 1,315: HEIGHT 1,150: GRID_COLUMN 1,5: GRID_ROW 1,2
GRID_ONE_COLUMN_WIDTH 1,1,24: GRID_ONE_COLUMN_WIDTH 1,2,117: GRID_ONE_COLUMN_WIDTH 1,5,36
GRID_ROW_HEIGHT 1,19
GRID_WRITE 1,1,2,"Volume": GRID_WRITE 1,1,3,"Total": GRID_WRITE 1,1,4,"Libre"
GRID_WRITE 1,1,5,"%"
WIDTH 0,WIDTH(1)+20

Diskinfo()
a$ = clipboard_string_paste$
k% = INSTR(a$,CHR$(13))
r% = 1
WHILE k% > 0
    r% = r%+1: b$ = LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+2)
    GRID_WRITE 1,r%,1,LEFT$(b$,2): k% = INSTR(b$,";")
    GRID_WRITE 1,r%,2,RIGHT_POS$(LEFT$(b$,k%-1),4): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,3,LEFT$(b$,k%-1): b$ = RIGHT_POS$(b$,k%+1)
    k% = INSTR(b$,";"): GRID_WRITE 1,r%,4,LEFT$(b$,k%-1): GRID_WRITE 1,r%,5,RIGHT_POS$(b$,k%+1)
    k% = INSTR(a$,CHR$(13))
END_WHILE
GRID_ROW 1,r%: HEIGHT 1,r%*21: HEIGHT 0,HEIGHT(1)+38
END
' ==============================================================================
SUB Diskinfo()
' Volumes actifs + taille totale + taille disponible (en Mo) -> clipboard
' 1 ligne par volume, de la forme
'    X: NomVolume;Taille_totale;Taille_libre;Pourcentage_libre
DIM_LOCAL q$,fb$,ret%,lect%,drv$,mm%,nn%,i%,k%,v$,a$,b$,t%,l%,p%
q$ = CHR$(34)+"X"+CHR$(34)
fb$ = "C:\TEMP\Tbat.bat": ' <===== TEMPORAIRE, AJUSTER ÉVENTUELLEMENT ! ========
FILE_OPEN_WRITE 9,fb$
FILE_WRITELN 9,"@echo off"
' infos sur les volumes si argument quelconque, sinon seulement les lettres de volumes
FILE_WRITELN 9,"set INFO=%1"
FILE_WRITELN 9,"call :Drive A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
FILE_WRITELN 9,"set INFO="
FILE_WRITELN 9,"goto :EOF"
FILE_WRITELN 9,":Drive"
FILE_WRITELN 9,"vol %1: > nul 2>nul"
FILE_WRITELN 9,"If ERRORLEVEL 1 goto Next"
FILE_WRITELN 9,"if not "+q$+"%INFO%=="+q$+" (vol %1:) else echo %1:"
FILE_WRITELN 9,":Next"
FILE_WRITELN 9,"shift"
FILE_WRITELN 9,"if NOT "+q$+"%1=="+q$+" goto :Drive"
FILE_CLOSE 9
EXECUTE_WAIT "CMD.exe /C "+fb$+" | clip"
FILE_DELETE fb$
mm% = 950: MEMO mm%: HIDE mm%
CLIPBOARD_PASTE mm%
b$ = ""
FOR i% = 1 TO COUNT(mm%)
    v$ = ITEM_READ$(mm%,i%)
    EXECUTE_WAIT "cmd.exe /c VOL "+v$+" | clip"
    a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"s'appelle"): nn% = 0
    IF k% = 0 THEN k% = INSTR(a$,"n'a pas de nom"): IF k%>0 THEN nn% = 1
    IF k%>0 AND v$<>""
        a$ = RIGHT_POS$(a$,k%+10): k% = INSTR(a$,CHR$(13))
        IF nn% = 0
            a$ = v$+" "+LEFT$(a$,k%-1): ' lettre + nom du volume
        ELSE
            a$ = v$+" (pas de nom)"
        END_IF
        t% = DISK_KILO_SIZE(LEFT$(v$,1))/1000: ' taille totale en Moctets
        l% = DISK_KILO_FREE(LEFT$(v$,1))/1000: ' taille libre en Moctets
        p% = 100*l%/t%: ' pourcentage disponible
        b$ = b$+a$+";"+STR$(t%)+";"+STR$(l%)+";"+STR$(p%)+"% "+CHR$(13)+CHR$(10)
    END_IF
NEXT i%
CLIPBOARD_STRING_COPY b$
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Invité
Invité




Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque EmptyJeu 8 Oct 2015 - 22:47

Je viens de tester la correction avec kerner32, cette fois-ci, ça fonctionne chez moi.
Revenir en haut Aller en bas
Contenu sponsorisé





Place libre sur un disque Empty
MessageSujet: Re: Place libre sur un disque   Place libre sur un disque Empty

Revenir en haut Aller en bas
 
Place libre sur un disque
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 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: