SerialNumber

Gondom, hogy nem jelenítődik meg a szériaszám. Ez a kódom :
procedure TForm1.Button1Click(Sender: TObject);
var
SerialNum : pdword;
a, b : dword;
Buffer : array [0..255] of char;
begin
if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer),
@SerialNum, a, b, nil, 0) then

Label1.Caption := IntToStr(SerialNum^);
end;
Nem értem mi lehet a gond? tudnátok segíteni?
A "c:\" helyett állhat cd, dvdrom (e:\, F:\) is?

Lehet...

Szerintem a Serialnum változó értékét kell használni, nem a mutatót, tehát nem a SerialNum^-ot, próbáld ki így:
procedure TForm1.Button1Click(Sender: TObject);
var
SerialNum : word;
a, b : dword;
Buffer : array [0..255] of char;
begin
if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer),
SerialNum, a, b, nil, 0) then

Label1.Caption := IntToStr(SerialNum);
end;

Üdv.: Totó

SerialNum továbbra is

Tenmagam

Köszi a segítséget Totó. Sajna így sem megy. A következő sornál hibát jelez :
SerialNum, a, b, nil, 0) then
Hibakód :
[Error]adatb.pas(279):Inconpatible types: 'Word' and 'PDWORD'
Az igazság, én nagyon kezdő vagyok ám. Csak kikapcsolódás képp kisérletezgetem. De ez zavar, hogy nem jön össze. Próbáltam variálgatni másképp is, de semmi sem jött össze. Nálad működik?
Most találtam rá egy netről letöltött csomagban a működö formára!
var
lpRootPathName,
lpVolumeNameBuffer,
lpFileSystemNameBuffer: array[0..63] of char;
lpMaximumComponentLength, lpVolumeNumber,
lpFileSystemFlags: DWORD;
begin
StrPCopy(lpRootPathName, 'c:\');
GetVolumeInformation(
lpRootPathName,
lpVolumeNameBuffer,
64,
@lpVolumeNumber,
lpMaximumComponentLength,
lpFileSystemFlags,
lpFileSystemNameBuffer,
64
);
Label1.Caption:=IntToHex(lpVolumeNumber, 8);
Label2.Caption:=StrPas(lpVolumeNameBuffer);
end;
Ez nálam működik. Azért köszi.

Könyvajánló

Programozzunk Turbo Delphi Rendszerben