Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich alle CD-ROM-Laufwerke herausfinden und... (https://www.delphipraxis.net/29650-wie-kann-ich-alle-cd-rom-laufwerke-herausfinden-und.html)

Andreas L. 12. Sep 2004 16:44


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:
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;
Was kann ich da tun?

Greetz und thx

Christian Seehase 12. Sep 2004 16:47

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:

Nothine 12. Sep 2004 16:48

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Zitat:

Zitat von onlinehome
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...

ich kenn free-pascal nicht, aber ich glaube kaum dass du da keine externen funktionen einbinden kannst, oder?
Delphi-Quellcode:
function GetDriveType; external kernel32 name 'GetDriveTypeA';
so is die funktion in delphi deklariert :roll:

//Edit: mist, zu spät :mrgreen:

Andreas L. 12. Sep 2004 17:05

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?

Nothine 12. Sep 2004 17:32

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Zitat:

Zitat von onlinehome
Schaut mal meinen Screenshot im Anhang an. Wo ist da der Fehler?

darin dass er erwartet das du die funktion vollständig deklarierst. probier mal
Delphi-Quellcode:
interface

  function GetDriveType(lpRootPathName: PChar): UINT; stdcall;
  {$EXTERNALSYM GetDriveType}

implementation

  function GetDriveType; external kernel32 name 'GetDriveTypeA';
[Edit3] jetz aba [/Edit3]

Andreas L. 12. Sep 2004 17:54

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Geht trotzdem nicht.
Code:
Undefinied: UINT

Nothine 12. Sep 2004 17:57

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Delphi-Quellcode:
type
  UINT = LongWord;
  {$EXTERNALSYM UINT}
oder nimm gleich integer :roll:

Andreas L. 12. Sep 2004 18:00

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Jetzt hab ich Integer genommen:
Code:
Undefinied: external

Nothine 12. Sep 2004 18:02

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 :?:

Bernhard Geyer 13. Sep 2004 07:19

Re: Wie kann ich alle CD-ROM-Laufwerke herausfinden und...
 
Zitat:

Zitat von Nothine
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 :?:

Ich würde sagen: Gar nicht. Der Compiler muss doch die externe Prozedur-Verlinkung unterstützten. Andersweitig könnte er doch keine unter Windows lauffähigen Programme erstellen werden (wenn irgendwas über DOS-Funktionalität hinauslaufen sollte.

Lass im Beispielcode einfach {$EXTERNALSYM ...} weg: Sollt auch ohne gehen. $EXTERNALSYM ist evtl. nur für den C++-Builder relevant.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr.
Seite 1 von 2  1 2      

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