AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
Thema durchsuchen
Ansicht
Themen-Optionen

Name des CD-ROM-Laufwerks (zB LITEON LTD163D)

Ein Thema von Garfield · begonnen am 9. Jan 2005 · letzter Beitrag vom 26. Jan 2005
 
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#17

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)

  Alt 12. Jan 2005, 07:50
Ich habe mir das Projekt im letzten Beitrag noch mal vorgenommen. Es werden nur noch die bass.dll und basscd.dll benötigt. Die Unit1 sieht dann wie folgt aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, SysUtils, Forms, Classes, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    cmbDrives: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure cmbDrivesChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  MAXDRIVES = 10;
  basscddll = 'basscd.dll';

function BASS_CD_GetDriveDescription(drive:DWORD): PChar; stdcall; external basscddll;
function BASS_CD_GetDriveLetter(drive:DWORD): DWORD; stdcall; external basscddll;

var
  Form1: TForm1;

  curdrive: Integer = 0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  n: PChar;
  a: Integer;
  lw,
  text: String;
begin

  // Get list of available drives
  a := 0;
  n := BASS_CD_GetDriveDescription(a);
  while (a < MAXDRIVES) and (n <> nil) do
  begin
    lw := n;
    lw := copy(lw, 0, pos(' v', lw) - 1);
    text := Format('%s: %s', [Char(BASS_CD_GetDriveLetter(a)
          + Ord('A')), lw]); // "letter: description"
    cmbDrives.Items.Add(text);
    a := a + 1;
    n := BASS_CD_GetDriveDescription(a);
  end;
  if (a = 0) then
  begin
    MessageBox(0, 'No CD drives found', 'Error', MB_ICONERROR);
    Halt;
  end;
  cmbDrives.ItemIndex := 0; // select 1st drive

end;

procedure TForm1.cmbDrivesChange(Sender: TObject);
begin
  // change current drive
  curdrive := cmbDrives.ItemIndex;
end;

end.
Im Anhang das Projekt als Source mit DLL.

Nachtrag: Ich hoffe, eine Stunde ist nicht so lang, als dass der Nachtrag nicht mehr gelesen wird.

Die virtuellen Laufwerke auf meinen beiden Rechnern werden als 'Generic' erkannt, während die anderen mit Namen (nur Großbuchstaben) angegeben werden. Kann ich im Umkehrschluss davon ausgehen, dass 'Generic' immer virtuelle Laufwerke sind? Denn dann kann ich wenigsten die schon mal ausschließen.
Angehängte Dateien
Dateityp: rar projekt_813.rar (103,9 KB, 18x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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