![]() |
Nur CD/DVD ROM Laufwerke auslesen..
hi..
wie bekomme ich es hin, dass zb in einem memo feld, alle cd-rom laufweke angezeigt werden??
Delphi-Quellcode:
das ist der code um herauszufinden von welchem typ ein laufwerk ist. wie kann ich jetzt alle laufwerksbuchstaben testen???
function DriveType(laufwerk: PChar): String;
begin case GetDriveType(laufwerk) of DRIVE_CDROM: result := 'CD-ROM Laufwerk'; DRIVE_FIXED: result := 'Festplatte'; DRIVE_RAMDISK: result := 'Ramdisk'; DRIVE_REMOTE: result := 'Netzlaufwerk'; DRIVE_REMOVABLE: result := 'Wechsellaufwerk'; 0: result := 'unbekanntes Laufwerk'; 1: result := 'FALSE'; end; end; wenn ich eine for schleife benutze, mit 67 (=C) als startwert, muss ich ja noch ':\' an den Char anfügen... also
Delphi-Quellcode:
das funktioniert aber nicht, weil laufwerk ja jetzt kein Char mehr ist, oder??
laufwerk := CHR(i) + ':\';
gruß knut |
Re: Nur CD/DVD ROM Laufwerke auslesen..
könnte so gehen:
Delphi-Quellcode:
for Drive := 'A' to 'Z' do
begin Str := ''; case GetDriveType(PChar(Drive + ':\')) of 0: ; { do nothing } 1: ; { do nothing } DRIVE_CDROM: begin Str := Drive + ':\'; ListBox1.Items.Add(Str); end; end; |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Und was soll dann das:
Zitat:
![]() |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Zitat:
|
Re: Nur CD/DVD ROM Laufwerke auslesen..
Steht doch oben: 0 bedeutet unbekannter Laufwerkstyp und 1, dass ein Fehler aufgetreten ist.
|
Re: Nur CD/DVD ROM Laufwerke auslesen..
Zitat:
|
Re: Nur CD/DVD ROM Laufwerke auslesen..
k thx damits klappts!!
die zwei zeilen lass ich weg ;) fertisch! ging sau schnell! thx! :dance: :dp: :dance: |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Moin Knut,
und damit Du nicht unnötig Laufwerksbuchstaben probierst, die eh' nicht auf dem Rechner vorhanden sind, könntest Du vorher die vergebenen mit ![]() |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Zitat:
Edit: Mist, das verweist ja auf die Suche. :duck: Also stimmt der Begriff nicht, oder es gibt keine Beiträge zu diesem. |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Ich darf mal auf den Link verweisen, der sich in meinem Beitrag befindet.
|
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; |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Gut, dann eben nicht. :cry:
|
Re: Nur CD/DVD ROM Laufwerke auslesen..
Zitat:
Ich habe nur gemeint, dass Christians Link licht geht. In deinem Beitrag deines Links steht dasselbe. :thumb: Ich habe den schon damals angeschaut. ;) |
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; |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Jetzt fängt Mathias gleich wieder an zu heulen. :roll:
![]() |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Da es keine Unicode-Version von SysUtils.StrLen gibt, sollte man in meinem Beispiel
Delphi-Quellcode:
durch
CurrentDrive := LPTSTR(@CurrentDrive[StrLen(CurrentDrive) + 1]);
Delphi-Quellcode:
ersetzen.
while (CurrentDrive[0] <> #0) do
CurrentDrive := CharNext(CurrentDrive); CurrentDrive := LPTSTR( Cardinal(CurrentDrive) + SizeOf(CurrentDrive[0])); Da die Standard-RTL von Delphi ohnehin keine brauchare Unicode-Unterstützung bietet, ist dies eher kosmetischer Natur... |
Re: Nur CD/DVD ROM Laufwerke auslesen..
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr. |
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