BCB6-Laufwerk wählen in dem bestimmte CD ist



  • jo darauf war ich auch shcon gekommen, leider bringt mir das nix weil er dann direkt in der if bedingung vom 1. laufwerkbuchstaben der net mehr vorhanden ist ans ende des programms springt und somit die else überspringt

    die if bedingung müsste irgendwie anders gemacht werden, aber ich hab keine ahnung wie



  • kann mir niemand weiterhelfen ?



  • Hallo

    Ich versuche mich mal in Dein Problem hinein zu versetzen (schreibt man das auseinander?)

    Du hast den Code sicherlich von Bytes&More und da sieht der Aufruf ein wenig anders aus.

    Wenn Du das Problem mit if und else nicht lösen kannst, so musst Du es abändern

    Kannst Du das nicht in eine eigene Funktion legen?

    void testDrive(AnsiString DriveLetter)
    {
      AnsiString slVolumeName;
      DWORD dwVolumeSerial;
      if(IsDiskInDrive(DriveLetter, slVolumeName,dwVolumeSerial) == true)
        Application->MessageBox(DriveLetter,"Laufwerk",32);     
      else  Application->MessageBox("Bitte cd einlegen","Fehler",32);
    }
    

    Du musst dann diese Funktion für alle Laufwerke, die Du testen willst, aufrufen

    Gruss Rostfrei[]



  • mh und was muss ich da noch machen wenn er alle laufwerke (a-z) nach der cd mit dem namen "AUDIO_CD" durchsuchen soll, er soll damit nicht aufhören falls es einen laufwerkbuchstaben nicht gibt und wenn die cd gefunden iss soll er aufhören und laufwerkbuchstaben ausgeben und wenn sie nirgends drin iss ne fehlermeldung



  • Hallo weedhead87

    char Alphabet[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',     'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    
      bool SpecialRomFounded = false;
      for(int x = 0; x <= 25; x++)
        {
          SpecialRoomFounded = testDrive(Alphabet[x]);
          if(SpecialRoomFounded == true)
            break;
        }
      if(SpecialRomFounded == false)
        Application->MessageBox("Bitte cd einlegen","Fehler",32);
    
    bool testDrive(AnsiString DriveLetter)
    {
      AnsiString slVolumeName;
      DWORD dwVolumeSerial;
      if(IsDiskInDrive(DriveLetter, slVolumeName,dwVolumeSerial) == true)
          if (slVolumeName=="AUDIO_CD")Application->MessageBox(DriveLetter,"Laufwerk",32);    
    }
    

    Weiss nicht, ob das ganze funktioniert; habe mir das gerade mal schnell aus den Fingern geaugt

    Gruss



  • ích glaube ich hab selbst ne funktion die funktoniert, habe ne schleife eingefügt:

    { for(int i=97;i<=122;i++) {
            char a=i;
      AnsiString DriveLetter=a;
      AnsiString slVolumeName;
      DWORD dwVolumeSerial;
      if(IsDiskInDrive(DriveLetter, slVolumeName,dwVolumeSerial) == true&&slVolumeName=="AUDIO_CD")
        Application->MessageBox("lol","Laufwerk",32);
    }
      else  Application->MessageBox("Bitte cd einlegen","Fehler",32);
    }
    


  • ´mh missplaced else steht da, iss doch aber richtig, oder ?

    {
      AnsiString slVolumeName;
      DWORD dwVolumeSerial;
    
            for(int i=97;i<=122;i++)
            {
                    char a=i;
                    AnsiString DriveLetter=a;
    
                    if(IsDiskInDrive(DriveLetter, slVolumeName,dwVolumeSerial) == true&&slVolumeName=="AUDIO_CD")
                     {
                        Application->MessageBox("lol","Laufwerk",32);
                     }
            }
            else  Application->MessageBox("Bitte cd einlegen","Fehler",32);
    }
    

    wenn ich das els vor die { setze gehts, aber dann kommt für jden buchstaben die fehlermeldung, ich will das die nur einma kommt



  • ok ich habs nun endlich danke für eure hile (man bin ich doof)

    {
      AnsiString slVolumeName;
      DWORD dwVolumeSerial;
    
            for(int i=97;i<=122;i++)
            {
                    char a=i;
                    AnsiString DriveLetter=a;
    
                    if(IsDiskInDrive(DriveLetter, slVolumeName,dwVolumeSerial) == true&&slVolumeName=="AUDIO_CD")
                     {
                        Application->MessageBox("CD gefunden","Laufwerk",32);
                     }
    
            else if (i==122)  Application->MessageBox("Bitte cd einlegen","Fehler",32);
    
            }
    }
    

    in dos gibts die variable %systemdrive% fürs windows verzeichnis
    gibts das unter c++ auch und wenn ja wie heißt diese variable oder wie bekomme ich diese info ?



  • Hallo

    char cBuf[MAX_PATH];
      GetWindowsDirectory(cBuf, sizeof(cBuf));
      ShowMessage("Windows-Verzeichnis: " + AnsiString(cBuf));
    

    Gruss Rostfrei[]



  • danke dir


Anmelden zum Antworten