Entwickler-Ecke
Dateizugriff - Volum ID eines Datenträgers auslesen (CD,HD,FD) [erledigt]
smilie128 - Sa 02.11.02 20:51
Titel: Volum ID eines Datenträgers auslesen (CD,HD,FD) [erledigt]
Hi Leute
Ich habe mir diese Forum ausgiebig angeschaut und bin zu dem entschluß gekommen, daß hier fähige Leute vertreten sind :) (Kein Schleim, pure wahrheit)
Also zu meinem Problem :
Ich schreibe eine MP3-Datenbank wo die Titel automatisch gesucht und eingelesen werden sollen, daß bedeutet CD einlegen, Knopf drücken und die Titel erscheinen in der Datenbank. Ich möchte aber verhindern, daß eine CD mehrfach eingelesen wird und da jeder Datenträger, soviel ich weiß, eine einmalige ID besitzt (stimmt das überhaupt??) möchte ich die Volume-ID´s vergleichen und mit den Datensätzen abspeichern.
wäre schön wenn jemand eine einfache Lösung hat denn ich habe keine Lust immer die gesammten Files und Directories zu vergleichen
Falls es wichtig ist ich benutze Delphi 6.
Danke im Vorraus
Smilie
LCS - So 03.11.02 10:31
Hi
den Datenträgernamen und die VolumeID bekommst du mit der API-Funktion GetVolumeInformation.
Gruss Lothar
smilie128 - So 03.11.02 13:39
Moin Lothar
So weit so gut.Nur finde ich nirgenwo eine syntaxbeschreibung und
Delphi sagt mir 'not enough actual parameters' . :?
Ich weiß zwar was das heist aber ich weiß nicht welche Parameter fehlen.
Hast du eventuell ein Beispiel parat oder einen Link zu einem Beispiel?
Das Problem ist , das ich mich mit der API nicht auskenne .
Gruß
Oliver
LCS - So 03.11.02 14:17
Hi
Die Syntaxbeschreibung zu API-Funktionen findest du in der Hilfe zum Windows SDK.
Plaziere mal einen Button und vier Labels auf ein Formular und probier das hier:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var volName, fsName: array[0..255] of char; serNum, maxLen, Flags : Cardinal; begin FillChar(volName, SizeOf(volName), 0); FillChar(fsName, SizeOf(fsName), 0); if GetVolumeInformation(PChar('C:\'), volName, SizeOf(volName), @serNum, maxLen, Flags, fsName, SizeOf(fsName)) then begin Label1.Caption := volName; Label2.Caption := IntToHex(serNum, 8); Label3.Caption := fsName; Label4.Caption := 'Max. Pfadlänge: ' + IntToStr(maxLen); end; end; |
serNum enthält die VolumeID als Integer.
Gruss Lothar
smilie128 - So 03.11.02 14:27
Moin Lothar
:D :D :D :D :D
DAS ist genau was ich brauche
ein paar kleine änderungen sind zwar nötig aber jetzt weis
ich wies geht
besten Dank Lothar hst mir sehr geholfen
Gruß Oliver
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!