![]() |
Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Hi,
wie kann ich alle CD-ROM-Laufwerke herausfinden und diese dann in eine ListBox eintragen ohne auf die Funktion GetDriveType zuzugreifen? Folgenden Code hab ich aber den kann ich in der Lazarus IDE (benutzt den Freepascal compiler) nicht verwenden, grund: GetDriveTyp ist dort in keiner Unit verfügbar...
Delphi-Quellcode:
Was kann ich da tun?
procedure TForm1.Button1Click(Sender: TObject);
var I,Typ: Integer; s: String; begin For i := 0 To 25 do begin s := Chr(i + 65) + ':\'; typ := GetDriveType(PChar(s)); If Typ <> 0 Then Case Typ of DRIVE_CDROM : Listbox1.Items.Add(Chr(i + 65) + ': CDROM'); end; end; end; Greetz und thx |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Moin Andreas,
GetDriveType ist eine API Funktion. Ich kenne jetzt den Freepascal Compiler nicht, aber man müsste doch Funktionen importieren können... :gruebel: |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Zitat:
Delphi-Quellcode:
so is die funktion in delphi deklariert :roll:
function GetDriveType; external kernel32 name 'GetDriveTypeA';
//Edit: mist, zu spät :mrgreen: |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Liste der Anhänge anzeigen (Anzahl: 1)
Schaut mal meinen Screenshot im Anhang an. Wo ist da der Fehler?
|
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Zitat:
Delphi-Quellcode:
[Edit3] jetz aba [/Edit3]
interface
function GetDriveType(lpRootPathName: PChar): UINT; stdcall; {$EXTERNALSYM GetDriveType} implementation function GetDriveType; external kernel32 name 'GetDriveTypeA'; |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Geht trotzdem nicht.
Code:
Undefinied: UINT
|
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Delphi-Quellcode:
oder nimm gleich integer :roll:
type
UINT = LongWord; {$EXTERNALSYM UINT} |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Jetzt hab ich Integer genommen:
Code:
Undefinied: external
|
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
da bleibt nur noch zu erkennen das free pascal wohl keine externe prozedur-verlinkung unterstützt... was uns in deinem fall wieder an die anfangsfrage zurückführt, wie ermittelt man den DriveType ohne die windows funktion :?:
|
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Zitat:
Lass im Beispielcode einfach {$EXTERNALSYM ...} weg: Sollt auch ohne gehen. $EXTERNALSYM ist evtl. nur für den C++-Builder relevant. |
Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
Sollte das nicht möglich sein, dann könnte man ja auch keine eigenen DLL's schreiben. Was mich wieder zum dem Schluss führen würde das dieser Kompiler keine 32-Bit Programme erzeugen kann, da unter 16-Bit DOS DLL's unbekannt waren - oder?
Edit: Ein Integer für ein LongWord zu nehmen ist keine gute Idee, da ein Integer ein vorzeichenbehafteter 32-Bit Ganzzahl Datentyp im Bereich von –2147483648..2147483647 ist und ein LongWord ein vorzeichenloser Ganzzahl Datentyp im Bereich von 0..429496729. Der entsprechende Delphi Datentyp wäre Cardinal, welches auch eun vorzeichenloser Ganzzahl Datentyp im, Bereich von 0..4294967295 ist. ;) |
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