![]() |
Laufwerkbuchstaben auslesen
Delphi-Quellcode:
Mit dem Code kann man die Laufwerkbuchstaben auslesen und in einer Combobox anzeigen lassen. Ich benutze aber ein Konsolen Programm und möchte die Buchstaben als eine Variable ausgeben. Ich bräuchte ja sowas wie eine Liste, was wäre hier passend?
var
Drive:Char; begin for Drive := 'A' to 'Z' do begin case GetDriveType(PChar(Drive + ':/')) of DRIVE_FIXED: ComboBox1.Items.Add(Drive+':\'); end; end; |
Re: Laufwerkbuchstaben auslesen
Dann schreib die Laufwerksbuchstaben doch mit
![]() |
Re: Laufwerkbuchstaben auslesen
möchte sie nich in der console haben, möchte sie als variable sodass eien prozedur mit den vorhandenen laufwerken arbeiten kann
|
Re: Laufwerkbuchstaben auslesen
Nimm doch ein Array.
|
Re: Laufwerkbuchstaben auslesen
Na dann sichere sie in einem Array und übergib das Array der Funktion.
|
Re: Laufwerkbuchstaben auslesen
Hm ok hab ich auch noch nich mit gearbeitet, werd das mal versuchen das wird wohl sowas sein:
Delphi-Quellcode:
var
HDD: Array[1..3] of Byte; Drive:Char; begin for Drive := 'A' to 'Z' do begin case GetDriveType(PChar(Drive + ':/')) of DRIVE_FIXED: HDD:=(Drive+':\'); |
Re: Laufwerkbuchstaben auslesen
Bei dir wären
![]() Im Notfall kannst du auch eine feste Größe von 24 zuweisen und dann von Low() bis High() arbeiten, doch das finde ich keine schöne Lösung. |
Re: Laufwerkbuchstaben auslesen
Habe jetzt folgenden Code gefunden:
Delphi-Quellcode:
Dafür brauch ich aber die System.IO.dcu. Wo krieg ich die her und wie initialisiere ich die in Delphi?
program Project1;
{$APPTYPE CONSOLE} uses System.IO; var Drives : Array of String; i : Integer; begin // Get the logical drives on this machine Drives := System.IO.Directory.GetLogicalDrives; // Display them for i := 0 to Length(Drives)-1 do Console.WriteLine(Drives[i]); Console.Readline; end. MFG |
Re: Laufwerkbuchstaben auslesen
System.IO ist .Net oder nicht?
Vielleicht ist der ![]() Gruesse Klaus |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Hier gehts um Delphi |
Re: Laufwerkbuchstaben auslesen
Hm also den versteh ich nicht. Würde gern mit dem Code weiterarbeiten:
Delphi-Quellcode:
Aber ich weiss nich wie ich das in ein Array speichere und als Variable weiter verwenden kann :/
var
Drive:Char; begin for Drive := 'A' to 'Z' do begin case GetDriveType(PChar(Drive + ':/')) of DRIVE_FIXED: ComboBox1.Items.Add(Drive+':\'); end; end; |
Re: Laufwerkbuchstaben auslesen
Es kann mit all den genannten Stichworten doch nicht so schwer zu sein, sich ein bisschen damit zu befassen oder :shock: Wir haben alle mal angefangen...
Delphi-Quellcode:
...:cat:...
var
Drive: Char; Drives: array of string; Idx: Integer; begin SetLength(Drives, 0); Idx := 0; for Drive := 'A' to 'Z' do begin if GetDriveType(PChar(Drive + ':/')) = DRIVE_FIXED then begin SetLength(Drives, Idx + 1); Drives[Idx] := Drive + ':\'; Idx := Idx + 1; end; end; if Length(Drives) > 0 then for Idx := Low(Drives) to High(Drives) do WriteLn(Drives[Idx]); end; |
Re: Laufwerkbuchstaben auslesen
Ich weiss nicht ob du das getestet hast aber bei mir kommt folgender Fehler:
Delphi-Quellcode:
. erwartet aber ; gefunden.. :/
..
.... ..... if Length(Drives) > 0 then for Idx := Low(Drives) to High(Drives) do WriteLn(Drives[Idx]); end; var blabla ...das Programm darf an dieser Stelle nich zuende sein =) |
Re: Laufwerkbuchstaben auslesen
Zitat:
|
Re: Laufwerkbuchstaben auslesen
Hab mein Beitrag nochma editiert. Der Fehler kommt:
. erwartet aber ; gefunden.. Das Programm geht ja noch weiter ich kann da kein end. hinsetzen... Hier nochma der Code
Delphi-Quellcode:
....
.... if Length(Drives) > 0 then for Idx := Low(Drives) to High(Drives) do WriteLn(Drives[Idx]); end; // ////Get System Directory Function function GetSysDir: String; var Dir : array [0..MAX_PATH+1] of Char; begin |
Re: Laufwerkbuchstaben auslesen
Hallo,
also ich habe das Problem etwas anders gelöst, für dein 'A'..'Z' kannst du auch die Funktion GetLogicalDriveStrings() nehmen. Folgendes funktionierte jedenfalls bei mir:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses Windows; var Drives: Array of Array[0..3] of Char; i: integer; begin SetLength(Drives, 26); SetLength(Drives, GetLogicalDriveStrings(length(Drives), @Drives[0]) div 4); for i:= Low(Drives) to High(Drives) do if GetDriveType(PChar(String(Drives[i])))= DRIVE_FIXED then system.Writeln(String(Drives[i])); end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 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