Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 26.08.16 12:33 
Ein freundliches Hallo an alle,

ich möchte eine Liste der vorhandenen Laufwerke haben. Die kann ich natürlich mit "TDriveComboBox" erhalten. Vielleicht gibt es aber auch noch eine Möglichkeit direkt eine Stringliste zu erhalten, ohne eine ComboBox zu bemühen.

Ich habe in der Hilfe jedenfalls nichts gefunden. Manchmal muß man eben wissen wie das heißt, was man sucht.

Grüße von der etwas warmn und sonnigen Nordsee ( 26° 85% [tropf, tropf] )

Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 13:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 26.08.16 13:31 
Hallo Frühlingsrolle, (schmackhafter Name)

Dank Dir für die Antwort! (Sie sind importiert) In der Tat, ich will die Liste der Laufwerke mit "GetDriveType" prüfen und das CD/DVD-Laufwerk finden. Es gibt also keine Funktion, die eine Stringliste erstellt, wie sie für "TDriveComboBox" gebraucht wird, (darauf hatte ich spekuliert) oder kann ich das Ergebnis von GetLogicalDriveStrings direkt als Stringliste verwenden?

Ich glaube ein bischen Bitpulerei ist da warscheinlich einfacher.

Grüße von der Nordsee

Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.08.16 15:38 
- Nachträglich durch die Entwickler-Ecke gelöscht -
t.roller
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 118
Erhaltene Danke: 34



BeitragVerfasst: Fr 26.08.16 18:11 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure List_CDROM_Drives;
const
  DRIVE_UNKNOWN = 0;
  DRIVE_NO_ROOT_DIR = 1;
  DRIVE_REMOVABLE = 2;
  DRIVE_FIXED = 3;
  DRIVE_REMOTE = 4;
  DRIVE_CDROM = 5;
  DRIVE_RAMDISK = 6;
var
  r: LongWord;
  Drives: array[0..128of char;
  pDrive: PChar;
begin
  Form1.DriveComboBox1.Items.clear;  // Form evtl. anpassen
  r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
  if r = 0 then Exit;
  if r > SizeOf(Drives) then
    raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
  pDrive := Drives;
  while pDrive^ <> #0 do
  begin
    if GetDriveType(pDrive) = DRIVE_CDROM then
       Form1.DriveComboBox1.Items.Add(pDrive); // Form evtl. anpassen
    Inc(pDrive, 4);
  end;
  Form1.DriveComboBox1.ItemIndex := 0// Form evtl. anpassen
  Form1.DriveComboBox1.Items.AddObject('vsIcon', TObject(vsIcon)); // Form evtl. anpassen
end;
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mi 07.09.16 13:28 
Ein freundliches Hallo an alle,

Dank Euch für Eure Lösungen! Habe ganz vergessen, dass diese Frage noch offen war. Mit etwas Bitpulerei bin ich zu folgender Lösung gekommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
function GetCD_Drive: String;
var
  Dr : DWORD  ;
  I  : Integer;
  Cd : String ;

begin
  Result := ''              ;
  Dr     := GetLogicalDrives;
  I      := 0               ;
  While (Result = ''and (I < 27do
  begin
    if Dr and $0001 > 0 then
    begin
      Cd := Chr( 65 + I ) + ':\';
      if GetDriveType( PChar( Cd ) ) = DRIVE_CDROM then Result := Cd;
    end;
    Dr := Dr shr 1;
    I  := I + 1   ;
  end;
end;

Grüße von der sonnigen Nordsee (noch 22°)

Peter