Autor | Thema: GetVolumeInformation | | Datum:30.03.02 08:03 
(mail@stschnell.de) | |
Hallo Community,
grüble gerade über die WinAPI-Funktion GetVolumeInformation, rufe sie wie folgt auf:
'*HeaderDateien************************************************
$H Windows.ph
'*VariablenDeklaration*****************************************
Declare VolumeName$, VolSerialNum&, MaxCompLen&
Declare FileSysFlags&, FileSysName$
'*Hauptprogramm************************************************
~GetVolumeInformation(0, @Addr(VolumeName$), 256, @Addr(VolSerialNum&), \
@Addr(MaxCompLen&), @Addr(FileSysFlags&), @Addr(FileSysName$), 256)
Print VolumeName$
Print VolSerialNum&
Print MaxCompLen&
Print FileSysFlags&
Print FileSysName$
WaitKey
'*Ende*********************************************************
End
In den Variablen der VolumeName$ und FilySysName$ erhalte ich nichts zurück, obwohl die Rückgabe des Funktionsaufrufes die korrekte Übergabe angibt. Was mache ich falsch?
Danke für Eure Antworten.
Tschüss
Stefan Schnell
|
| | Datum:30.03.02 10:39 
(rgh-soft@t-online.de) | |
> In den Variablen der VolumeName$ und FilySysName$ erhalte ich
> nichts zurück, obwohl die Rückgabe des Funktionsaufrufes die
> korrekte Übergabe angibt. Was mache ich falsch?
Du mußt in diesem Fall die Stringvariablen zuvor auf die mögliche Länge des Ergebnisses erweitern. Also zum Beispiel
VolumeName$ = Space$(255)
FileSysName$ = Space$(255)
Hintergrund: Da der API-Aufruf die Längeninformation des Strings nicht verändert, muß er zuvor groß genug gemacht werden, um das Ergebnis aufzunehmen. (Macht man das nicht, kann es sogar eine Zugriffsverletzung geben. In Delphi verhält es sich übrigens gnauso.) Nach dem Aufruf kann der String dann mit trim$ auf de tatsächlich zurückgegebene Länge gekürzt werden.
Gruß
Roland
|
| | Datum: 30.03.02 16:41 
(mail@stschnell.de) | |
Hallo Roland,
Danke für die Antwort, funktioniert wunderbar.
Tschüss
Stefan Schnell
|
|
|