Thema: Prism GetVolumeinformation

Einzelnen Beitrag anzeigen

impz

Registriert seit: 26. Mär 2006
4 Beiträge
 
Delphi 2005 Personal
 
#1

GetVolumeinformation

  Alt 26. Mär 2006, 15:08
Hi,

Ich möchte ein Programm schreiben, welches Informationen über Laufwerke (CD/DVD/HDD etc), mit der Funktion GetVolumeInformation ausliest.
Ich habe ein erstes Programm in Delphi Win32 geschrieben, welches super funktionierte.

Um die Funktionalität meines Programmes zu erweitern habe ich dann das gleiche Projekt nochmal mit Delphi.Net angefangen.
Es mussten einige Variablen umgechrieben werden, etc. Eigentlich alles nicht so das Problem.
Doch merkwürdigerweise bekomme ich nur noch leere Variablen von der Funktion GetVolumeInformation zurück.

Delphi-Quellcode:
procedure TForm4.ComboBox1Change(Sender: TObject);
var
  Drive: string;
  drive_buffer: StringBuilder;
  drive_sn: cardinal;
  drive_temp : cardinal;
  Sys_flags: cardinal;
  file_system: Stringbuilder;
begin
   Listbox1.Items.Clear;
   drive_buffer := stringbuilder.Create;
   file_system := stringbuilder.Create;

   Drive := combobox1.Text; //Laufwerksbuchstabe

   GetVolumeinformation(Drive,drive_buffer,sizeof(drive_buffer),drive_sn,
   drive_temp,sys_flags, file_system, sizeof(file_system));

   //Ausgabe
   Listbox1.Items.Add(Drive);
   Listbox1.Items.Add('Name: ' + drive_buffer.tostring());
   Listbox1.Items.Add('Serialnumber: ' + inttostr(drive_sn));
   Listbox1.Items.Add('Filesystem: ' + file_system.tostring());

end;
In der MSDN (MSDN - GetVolumeInformation) steht ja, dass man Pointer verwenden soll. Delphi.Net verlangt aber StringBuilder für diese Funktion (Delphi Win32 verlangt Pointer).

Kurz und knapp - Kompilieren geht, die Ausgabe in der Listbox bleibt leer und ich habe keinen Plan warum, weil ich mich mit .Net noch nicht so auskenne.
Ben
Risk everything or gain nothing.
  Mit Zitat antworten Zitat