Nom de volume sous Delphi 4

Nom de volume sous Delphi 4 - Programmation

Marsh Posté le 01-06-2001 à 21:19:29    

Bonjour tout le monde
aujourd'hui question sur Delphi :
 
Comment est-ce qu'on fait pour avoir le nom de volume d'un lecteur donné ?
ya bien TDriveComboBox mais le problème c qu'il faut réactualiser au cours du programme le contenu et çà je sais pas faire.
 
Alors le nom de volume ?
 
Thx à tous et bon WE !
Edo


---------------
Savoir -> Pouvoir & Freedom aussi
Reply

Marsh Posté le 01-06-2001 à 21:19:29   

Reply

Marsh Posté le 02-06-2001 à 08:46:07    

bon alors si je comprends bien ya personne que çà interresse?
Zut alors


---------------
Savoir -> Pouvoir & Freedom aussi
Reply

Marsh Posté le 02-06-2001 à 18:38:12    

le TDriveComboBox, c'est un component Win3.1 donc a mon avis y'a plus grand monde qui l'utilise...
 
sinon pour le nom du volume, essaye avec l'API GetVolumeInformation:

Citation :

Code :
  1. var
  2.   sNomDeVolume : array [0..11] of Char;
  3.   iNumeroDeSerie : DWORD;
  4.   iFlagsInutiles : DWORD;
  5.   sDisque : string;
  6. begin
  7.    sDisque := 'C:\';
  8.    GetVolumeInformation(PChar(sDisque),sNomDeVolume,SizeOf(sNomDeVolume),
  9.                     @iNumeroDeSerie,iFlagsInutiles,iFlagsInutiles,nil,0);
  10.    ShowMessage(sNomDeVolume + ' (' + IntToHex(iNumeroDeSerie,8) + ')');
  11. end;


 

[edit]--Message édité par JWhy--[/edit]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 03-06-2001 à 11:33:34    

Effectivement, j'ai trouvé cette fonction sur le net, mais si on regarde bien, le nom de volume est un nom au format DOS, c à dire sur 12 caractères.
Or moua je veux le nom long.
 
J'ai trouvé une solution pour avoir les noms longs sous DOS mais cette fonction ne marche pas en Delphi.
 
{ Unit‚ pour lister les noms longs sous windows }
unit lfiles;
 
interface
 
 type t_long_dta=record
                  attr:byte;
                  a:array[0..30]of byte;
                  size:longint;
                  b:array[0..7]of byte;
                  nom:array[0..255]of byte;
                 end;
 
 
 var  dta:t_long_dta;
      masque:string;
      handle:word;
 
 function findfirst:boolean;
 function findnext:boolean;
 function nom_dta:string;
 
implementation
 
function findfirst:boolean;
begin
 asm
  push ds
  push ds
  pop  es
 
  mov  cx,$3F
  mov  dx,offset masque
  inc  dx
  mov  di,offset dta
  xor  si,si
  mov  ax,$714E
  int  $21
  jnb  @suite1
  xor  ax,ax
  jmp  @fin1
 @suite1:
  mov  handle,ax
   
  mov  ax,1
 @fin1:
 pop  ds
end;
 findfirst:=true;
end;
 
function findnext:boolean;
begin
asm
  push ds
  push ds
  pop  es
 
  mov  bx,handle
  mov  di,offset dta
  xor  si,si
  mov  ax,$714F
  int  $21
  jnb  @suite2
  xor  ax,ax
  jmp  @fin2
           
 @suite2:
  mov  ax,1
 @fin2:
 pop  ds
end;
 findnext:=false;
end;
 
function nom_dta:string;
var i:word;
    n:string;
begin
 n:='';
 i:=0;
 while (dta.nom[i]<>0)and (i<255) do
 begin
  n:=n+chr(dta.nom[i]);
  inc(i);
 end;
 nom_dta:=n;
end;
 
 
begin
 masque:='*'+#0;
end.
 
 
Et si on filtre avec l'attribut VolumeID on a le nom de volume en NomLong.
Sauf que çà ne marche pas sous Windows.  
 
Alors il faut que je trouve l'API qu'il faut.
Ou éventuellement la correspondance win98 de TDriveComboBox !
 
Voilà
 
Merci beaucoup JWhy
 
Edo


---------------
Savoir -> Pouvoir & Freedom aussi
Reply

Marsh Posté le 03-06-2001 à 16:51:27    

bon... ch'ui con.... :o  
 
sur mon Win2K, il suffit de changer la declaration de sNomDeVolume et ca marche:

Code :
  1. sNomDeVolume : array [0..255] of Char;


 
je sais pas si c'est ok pour Win9x cependant !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 04-06-2001 à 13:50:18    

Bon alors j'ai un pote qui a trouvé la solution :
 pour le tdrivecombobox il suffit de faire :
   with Drive do
    textcase:=textcase;
 
voilà
merci bien qd même JWhy !
 
a+


---------------
Savoir -> Pouvoir & Freedom aussi
Reply

Marsh Posté le 04-06-2001 à 19:06:08    

g pas de reponses Edo mais je te dis bonjour au passage :)
 
@ bientot :hello:

Reply

Marsh Posté le 04-06-2001 à 20:07:58    

c pas grave Yack, je sais bien que tu fais pas de Delphi !
 
En plus on m'a filer la solution (celle mentionnée plus haut) donc je suis content, je vais pouvoir faire la liste de tout ce qu'il y a sur mes CD !
 
:)
 
Edo


---------------
Savoir -> Pouvoir & Freedom aussi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed