![]() |
Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Hi,
ich programmiere noch nicht lange und hatte auch gerade erst ein dreiviertel Jahr Unterricht in der Schule. Jetzt bin ich über schweres Problem gestolpert und hoffe ihr könnt mir helfen. Ich will ein Programm schreiben, was bestimmte Ordner als Laufwerke einbindet. Wie das geht, ist kein Problem, da es den schönen MS-Dos Befehl subst gibt. Ich bräuchte aber in meinem Programm eine Pulldown- Liste, in der alle noch nicht belegten Laufwerksbuchstaben aufgeführt sind. Wenn man einen Buchstaben auswählt, soll dieser in einem String gespeichert werden. Ich habe überhaupt keine Ahnung wie man sowas angehen kann und auch Google war nicht hilfreich. Ich hoffe ihr könnt mir da weiterhelfen. Ich wäre euch für leicht verständliche Erklärungen, bzw. Code- Beispiele sehr dankbar. Jan |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Hallo, herzlich Willkommen in der DP :dp: .
Schau Dir mal die Win32-API-Funktion GetDriveType an. |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
So viel hilft mir das aber nicht weiter. Laut Delphi Hilfe kann man damit den DatenträgerTYP bestimmen.
Zitat:
|
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Hi,
wen du ![]() Versuche den Code zu verstehen, führe ihn mal 1:1 aus und dann siehst du sicher schnell, was du abändern musst. :) |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Ich glaube er meint du sollst es anhand des Rückgabewertes machen. Auf diese Art und Weise kannst du auch GetVolumeInformation nutzen.
Am besten ist natürlich einfach die Verwendung von GetLogicalDrives weil man daran genau erkennt welche Laufwerksbuchstaben genutzt werden und welche nicht. |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
@SirThornberry :zwinker:
|
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Vielen Dank soweit. Besonders an Matze. Der Link hat mich ein ganzes Stück weiter gebracht. Musste ja auch nur drei Buchstaben und ein Leerzeichen einfügen :-D :-D
Nur wie kann ich jetzt ein Pulldown Menü erstellen und dort die Einträge der Listbox speichern? Hab leider noch nie mit Pulldown Menüs gearbeitet, denke aber dass es nicht allzu schwer ist, oder? |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Hi,
dafür nutzt du einfach eine TComboBox. Diese kannst du gleich füllen wie eine TListBox. Edit: Ich kenne deine Änderungen nicht, aber so hätte ich's wohl gelöst:
Delphi-Quellcode:
for I := 0 to 25 do
if not DriveExists[I] then ComboBox1. // ... |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Mit den drei Buchstaben + ein Leerzeichen meinte ich das "not ". Damit hatte ich dann ja schon eine Auflistung aller nicht belegten Laufwerksbuchstaben. Natürlich kann man die obere Funktion komplett löschen, da ich ja nicht wissen will, ob der Buchstabe vllt. ein CD- Rom Laufwerk ist. Ich weiß ja, dass er noch nicht vergeben ist.
Dem Tipp mit der ComboBox werde ich gleich nachgehen. |
Re: Nicht belegte Laufwerksbuchstaben als Pulldown- Menü
Hallo Jan,
es gibt noch mehr Möglichkeiten. Insbesondere interessieren mich die Laufwerkstypen nicht, wenn ich die freien Laufwerksbuchstaben wissen möchte:
Delphi-Quellcode:
Grüße vom marabu
procedure GetLogicalDriveLetters(s: TStrings; mounted: Boolean = False);
var dw: DWORD; i: Integer; letter: Char; begin s.BeginUpdate; // Visualisierung abschalten s.Clear; // Mit leerer Liste beginnen dw := GetLogicalDrives; // Mount-Status aller Laufwerksbuchstaben for letter := 'A' to 'Z' do // Schleife über alle Laufwerke begin if not mounted xor Odd(dw) then // Ein Rätsel für dich s.Add(letter + ':'); // Dann ist Laufwerksbuchstabe frei dw := dw shr 1; // Nächstes Status-Bit auf Bit-Position 0 schieben end; s.EndUpdate; // Visualisierung wieder einschalten end; procedure TDemoForm.FormCreate(Sender: TObject); begin GetLogicalDriveLetters(ComboBox.Items); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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