Nom de volume sous Delphi 4 - Programmation
Marsh Posté le 02-06-2001 à 08:46:07
bon alors si je comprends bien ya personne que çà interresse?
Zut alors
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 :
|
[edit]--Message édité par JWhy--[/edit]
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
Marsh Posté le 03-06-2001 à 16:51:27
bon... ch'ui con....
sur mon Win2K, il suffit de changer la declaration de sNomDeVolume et ca marche:
Code :
|
je sais pas si c'est ok pour Win9x cependant !
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+
Marsh Posté le 04-06-2001 à 19:06:08
g pas de reponses Edo mais je te dis bonjour au passage
@ bientot
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
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