AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

CD/DVD-Laufwerk prüfen

Ein Thema von Luki206 · begonnen am 16. Dez 2013 · letzter Beitrag vom 17. Dez 2013
Antwort Antwort
Seite 1 von 2  1 2   
Luki206
(Gast)

n/a Beiträge
 
#1

CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 13:57
Hi,
ich habe folgende Frage: Wie kann man es machen, damit, beim Programmstart, geprüft wird, ob sich eine CD im Laufwerk befindet und welche CD/DVD dort drin liegt. Das ganze sollte folgendermaßen Funktionieren, wenn man das Programm startet soll geprüft werden ob die CD mit dem Installationsprogramm eingelegt ist. Ich habe schon gegooglet und habe auch schon herausgefunden wie ich prüfe ob eine CD eingelegt ist oder nicht. Nur weis ich jetzt nicht, wie ich das mit dem Namen und Inhalt prüfen machen sollte. Websiten mit Beispielen und Erklärungen wären auch hilfreich
Danke
Luki
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 13:59
Vielleicht denke ich zu simpel, aber
if FileExists(<Laufwerksbuchstabe> + ':\MeineSetup.exe') then
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#3

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 16:13
Hmm.. Klingt logisch, aber ich habe in dem einen Tutorial nur gelesen wie man mit Boolean prüft ob eine CD/DVD eingelegt ist. Nur will ich dann jetzt ja den Laufwerkbuchstaben wissen und jetzt weis ich nicht, wie ich den Laufwerkbuchstaben ermittle.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 16:23
http://www.delphi-treff.de/tipps/sys...e-cd-ram-disk/
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#5

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 16:47
Ich habe das von dem Link jetzt versucht ein wenig umzubauen nur schaffe ich das irgendwie nicht. Im Tut. steht es ja so da:
Delphi-Quellcode:
procedure GetDrives(const AItems: TStrings);
const
   DriveTypeTexts: array[DRIVE_UNKNOWN..DRIVE_RAMDISK] of string =
    ('Unbekannt', 'Kein Wurzelverzeichnis', 'Diskette', 'Festplatte', 'Netzlaufwerk', 'CDROM', 'RAMDisk');
var
   Drive: Char;
   DriveType: Integer;
   DriveMask: Integer;
   Flag: Integer;
begin
   DriveMask := GetLogicalDrives; //Bitmaske holen
   flag := 1; //Startflag setzen
   for Drive := 'Ato 'Zdo //Jeden Buchstaben gegenprüfen
   begin
     if (flag and DriveMask) <> 0 then
     begin
       DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
       AItems.Add(Format('%s: %s', [Drive, DriveTypeTexts[DriveType]]));
     end;
     flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
   end;
end;
Und jetzt möchte ich nur dass das Laufwerk geprüft wird. Ich hätte das jetzt folgendermaßen umgeschrieben nur kommt die Fehlermeldung:
[dcc32 Fehler] Unit1.pas(29): E2029 '..' erwartet, aber ']' gefunden
[dcc32 Fehler] Unit1.pas(30): E2010 Inkompatible Typen: 'Int64' und 'string'
[dcc32 Fehler] Unit1.pas(31): E2029 'OF' erwartet, aber 'VAR' gefunden
[dcc32 Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Misslungen

Und hier ist mein Code:
Delphi-Quellcode:
procedure GetDrives(const AItems: TStrings);
const
   DriveTypeTexts: array[DRIVE_CDROM] of string =
    ('CDROM');
var
   Drive: Char;
   DriveType: Integer;
   DriveMask: Integer;
   Flag: Integer;
begin
   DriveMask := GetLogicalDrives; //Bitmaske holen
   flag := 1; //Startflag setzen
   for Drive := 'Ato 'Zdo //Jeden Buchstaben gegenprüfen
   begin
     if (flag and DriveMask) <> 0 then
     begin
       DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
       AItems.Add(Format('%s: %s', [Drive, DriveTypeTexts[DriveType]]));
     end;
     flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
   end;
end;
Ich glaube ich denke mal wieder zu kompliziert und die Lösung ist ganz einfach..

Geändert von Luki206 (16. Dez 2013 um 16:50 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 17:01
Hallo,

das Array sollte nach deinem Code aber so bleiben.
Aber ich würde das einfacher machen.

Delphi-Quellcode:
procedure GetDrives(const AItems: TStrings);
var
   Drive: Char;
   DriveType: Integer;
   DriveMask: Integer;
   Flag: Integer;
   S1: String;
begin
   AItems.Clear;
   DriveMask := GetLogicalDrives; //Bitmaske holen
   flag := 1; //Startflag setzen
   for Drive := 'Ato 'Zdo //Jeden Buchstaben gegenprüfen
   begin
     if (flag and DriveMask) <> 0 then
     begin
       DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
       if DriveType=DRIVE_CDROM then
       begin
         AItems.Add(Drive);

         // falls das nicht klappt
         S1 := Drive;
         AItems.Add(S1);
       
       end;
     end;
     flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
   end;
end;
Code ist nicht getestet.
Im Ergebnis sind die Buchstaben aller CD-/ DVD-Laufwerke in der StringList.

Heiko
Heiko
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#7

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 18:58
Danke für deine Antwort. Nur benötige ich die Variable in einem String und nicht in einer Listbox.. Ich habe das jetzt so um geschrieben wie ich denke es sollte richtig sein:
Delphi-Quellcode:
procedure GetDrives(const AItems: String);
var
    Drive: Char;
    DriveType: Integer;
    DriveMask: Integer;
    Flag: Integer;
    S1: String;
begin
    DriveMask := GetLogicalDrives; //Bitmaske holen
    flag := 1; //Startflag setzen
    for Drive := 'Ato 'Zdo //Jeden Buchstaben gegenprüfen
    begin
      if (flag and DriveMask) <> 0 then
      begin
        DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
        if DriveType=DRIVE_CDROM then
        begin
          AItems := (Drive);
        end;
      end;
      flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
    end;
end;
Nur kommt folgende Fehlermeldung:
[dcc32 Fehler] Unit1.pas(44): E2064 Der linken Seite kann nichts zugewiesen werden
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#8

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 19:26
Hat sich erledigt Habe es jetzt so hinbekommen:
Delphi-Quellcode:
procedure GetDrives(var Item: String);
var
    Drive: Char;
    DriveType: Integer;
    DriveMask: Integer;
    Flag: Integer;
begin
    DriveMask := GetLogicalDrives; //Bitmaske holen
    flag := 1; //Startflag setzen
    for Drive := 'Ato 'Zdo //Jeden Buchstaben gegenprüfen
    begin
      if (flag and DriveMask) <> 0 then
      begin
        DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
        if DriveType=DRIVE_CDROM then
        begin
         Item := (Drive);
        end;
      end;
      flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var show: String;
begin
GetDrives(show);
Label1.Caption := show;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 19:33
Und was machst Du bei mehreren CD-/DVD-Laufwerken? Es soll ja auch Leute geben, die einen separaten Brenner verbaut haben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: CD/DVD-Laufwerk prüfen

  Alt 16. Dez 2013, 23:38
Ich glaube ja du machst dir Probleme wo keine sind und triffst Annahmen die in der Praxis wiederum Probleme machen.
Aber das du nicht geschrieben hast was du eigentlich vorhast kann ich nur raten.

Also: manche Firmen betreiben CD-ROM-Server.
Häufig benötigte CDs/DVDs (z.B. MS Office) werden in Serverlaufwerke eingelegt und können von Client-Rechner im LAN gelesen werden.
Oder der gesamte Inhalt wird irgendwo auf einem Netzwerkverzeichnis abgelegt.
Software Updates werden zunehmend gar nicht mehr auf DVD ausgeliefert sondern müssen heruntergeladen werden.

Es spielt heutzutage keine Rolle mehr auf welchem Medium irgendwelche Installation oder Daten vorliegen.
Daher ist es sinnlos zu prüfen ob ein Laufwerk ein CD/DVD Medium oder vielleicht ein USB-Memorystick ist.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz