Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Nur CD/DVD ROM Laufwerke auslesen.. (https://www.delphipraxis.net/17851-nur-cd-dvd-rom-laufwerke-auslesen.html)

Christian Seehase 11. Mär 2004 16:38

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Moin Matze,

stimmt, kein Ergebnis :?
Und ich war mir absolut sicher, dass ich dazu schon mal was gepostet hatte.

Na gut, dann jetzt:

Delphi-Quellcode:
var
  sDrives : string;
  iIndex : integer;

begin
  // 105, da 26 mögliche Laufwerke im Format:
  // Buchstabe:\#00
  // sowie abschliessende #00
  sDrives := StringOfChar(#00,105);
  GetLogicalDriveStrings(105,@sDrives[1]);
  iIndex := 1;
  while sDrives[iIndex] <> #00 do begin
    ShowMessage(copy(sDrives,iIndex,3));
    inc(iIndex,4);
  end;
end;

MathiasSimmack 11. Mär 2004 16:40

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Gut, dann eben nicht. :cry:

Matze 11. Mär 2004 16:44

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Zitat:

Zitat von MathiasSimmack
Gut, dann eben nicht. :cry:

Hey, komm schon! :D

Ich habe nur gemeint, dass Christians Link licht geht.
In deinem Beitrag deines Links steht dasselbe. :thumb:

Ich habe den schon damals angeschaut. ;)

NicoDE 11. Mär 2004 17:04

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  BufferLength: DWORD;
  DriveStrings: LPTSTR;
  CurrentDrive: LPTSTR;
  ReturnValue: DWORD;
begin
  BufferLength := GetLogicalDriveStrings(0, nil);
  if (BufferLength > 0) then
  begin
    DriveStrings := LPTSTR(GetMemory(
      (BufferLength + 1) * SizeOf(DriveStrings[0])));
    if (DriveStrings <> nil) then
    try
      ReturnValue := GetLogicalDriveStrings(BufferLength, DriveStrings);
      if (ReturnValue > 0) and (ReturnValue <= BufferLength) then
      begin
        CurrentDrive := DriveStrings;
        while (CurrentDrive[0] <> #0) do
        begin
          if (GetDriveType(CurrentDrive) = DRIVE_CDROM) then
            MessageBox(Handle, CurrentDrive, 'CD-ROM', MB_OK);

          CurrentDrive := LPTSTR(@CurrentDrive[StrLen(CurrentDrive) + 1]);
        end;
      end;
    finally
      FreeMemory(DriveStrings);
    end;
  end;
end;

Matze 11. Mär 2004 17:10

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Jetzt fängt Mathias gleich wieder an zu heulen. :roll:

Hier ist sein Code, er stimmt teilweise mit deinem überein. ;)

NicoDE 11. Mär 2004 17:44

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Da es keine Unicode-Version von SysUtils.StrLen gibt, sollte man in meinem Beispiel
Delphi-Quellcode:
          CurrentDrive := LPTSTR(@CurrentDrive[StrLen(CurrentDrive) + 1]);
durch
Delphi-Quellcode:
          while (CurrentDrive[0] <> #0) do
            CurrentDrive := CharNext(CurrentDrive);
          CurrentDrive := LPTSTR(
            Cardinal(CurrentDrive) + SizeOf(CurrentDrive[0]));
ersetzen.

Da die Standard-RTL von Delphi ohnehin keine brauchare Unicode-Unterstützung bietet, ist dies eher kosmetischer Natur...

MathiasSimmack 11. Mär 2004 18:54

Re: Nur CD/DVD ROM Laufwerke auslesen..
 
Zitat:

Zitat von Matze
Jetzt fängt Mathias gleich wieder an zu heulen. :roll:

Nein, ist schon okay. Wenn´s vom Ozeanbunny und von Nico kommt, dann hat das eben mehr Gewicht. Oder um es mit Dr. Zoidberg zu sagen: "What? Am I smelling?" :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz