Diskette formatieren



  • unbemerkt aus dem Grund, da das Programm so einfach wie möglich zu bedienen sein soll. Die Diskette wird als "User-ID-Disk" verwendet werden und daher soll sie zuvor formatiert werden. Und wenn der User dann da erst in irgendeinem Windows-Dialog herumklicken muss und wenn dann was falsch gmacht wird... ich darf gar net weiterdenken... deshalb unbemerkt 😉



  • Damit du eine UserDisk anlegen kannst muss du den User erst einmal auffordern eine leere Diskette einzulegen. SOnst formatierst du ihm ja noch eine wichtige Datendiskette ( aus Versehen)... Fordere den User auf eine Diskette einzulegen und lass ihn das Formatieren bestätigen.
    Also nimm einfach den

    system("format a: /Q");
    

    Und dann soll er noch mit Y bestätigen und schwupps wird die Diskette formatiert.

    FGGF



  • Auszug aus meinem Code:

    ...
    void __fastcall Twnd_CreateUser::cmd_CreateUserClick(TObject *Sender)
    {
    AnsiString slVolumeName;
    DWORD dwVolumeSerial;
    bool DriveStatus;
    
    //Erzeugen und Verschlüsseln der Userdatei
    ...
    //Hinweis zum Einlegen der Diskette
    Application->MessageBox("*) Bitte legen Sie eine Diskette in Laufwerk A: ein.\n*) Achtung alle Daten auf dieser werden gelöscht!\n*) Klicken Sie auf OK sobald sich die Diskette im Laufwerk befindet.\n*) Klicken Sie im folgenden Fenster auf 'Starten'.\n*) Warten Sie den Vorgang ab und schließen Sie dann das Fenster.","Warnung",MB_OK|MB_ICONWARNING);
    
    //Überprüfen ob Diskette in Laufwerk A
    do
    {
     DriveStatus = IsDiskInDrive("a",slVolumeName,dwVolumeSerial);
     if(DriveStatus != true)
     {
      Application->MessageBox("*) Sie haben keine Diskette in Laufwerk A: eingelegt.\n*) Legen Sie die Diskette ein und klicken Sie erneut auf 'Benutzer anlegen'.","Warnung",MB_OK|MB_ICONERROR);
     }
     else
     {
      //Formatieren der Diskette
      ...
      //Schreiben der Userdatei auf die Diskette
      tf_NewUserDetails->Lines->SaveToFile("a:\\userinfo.dat");
      //Abschließende Erfolg-Meldung
      Application->MessageBox("Benutzer wurde erzeugt.","Warnung",MB_OK|MB_ICONINFORMATION);
      //Zurückkehren zum Start-Fenster
      Close();
     }
    }
    while(DriveStatus = false);
    }
    //---------------------------------------------------------------------------
    

    daraus dürfte wohl klar ersichtlich sein, dass der User Informiert wird 🙄



  • Dann musst du ja nur noch den Befehl

    system("format a:");
    

    einfügen und schon läufts.

    FGGF





  • The Godfather schrieb:

    Dann musst du ja nur noch den Befehl

    system("format a:");
    

    einfügen und schon läufts.

    FGGF

    Nein eben nicht da ich nicht will dass sich irgendein Fenster öffnet bei dem der User was tun muss. Es soll automatisch von statten gehen ! 😡



  • Für Alle die es interessiert 😉

    Formatieren einer Diskette ohne Fenster:

    ... 
    void __fastcall Twnd_CreateUser::cmd_CreateUserClick(TObject *Sender) 
    { 
    AnsiString slVolumeName; 
    DWORD dwVolumeSerial; 
    bool DriveStatus; 
    
    //Strukturen die zum Formatieren benötigt werden
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    
    //Erzeugen und Verschlüsseln der Userdatei 
    ... 
    //Hinweis zum Einlegen der Diskette 
    Application->MessageBox("*) Bitte legen Sie eine Diskette in Laufwerk A: ein.\n*) Achtung alle Daten auf dieser werden gelöscht!\n*) Klicken Sie auf OK sobald sich die Diskette im Laufwerk befindet.\n*) Klicken Sie im folgenden Fenster auf 'Starten'.\n*) Warten Sie den Vorgang ab und schließen Sie dann das Fenster.","Warnung",MB_OK|MB_ICONWARNING); 
    
    //Überprüfen ob Diskette in Laufwerk A 
    do 
    { 
     DriveStatus = IsDiskInDrive("a",slVolumeName,dwVolumeSerial); 
     if(DriveStatus != true) 
     { 
      Application->MessageBox("*) Sie haben keine Diskette in Laufwerk A: eingelegt.\n*) Legen Sie die Diskette ein und klicken Sie erneut auf 'Benutzer anlegen'.","Warnung",MB_OK|MB_ICONERROR); 
     } 
     else 
     { 
      //Formatieren der Diskette 
      CreateProcess(NULL,"format.com a: /y /q",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
      //Schreiben der Userdatei auf die Diskette 
      tf_NewUserDetails->Lines->SaveToFile("a:\\userinfo.dat"); 
      //Abschließende Erfolg-Meldung 
      Application->MessageBox("Benutzer wurde erzeugt.","Warnung",MB_OK|MB_ICONINFORMATION); 
      //Zurückkehren zum Start-Fenster 
      Close(); 
     } 
    } 
    while(DriveStatus = false); 
    } 
    //---------------------------------------------------------------------------
    

    Na TheGodfather was sagst jetzt... 🙄



  • Mit einer While-Schleife würde ich das nicht machen. Der User hat doch gar keine Chance das Ding abzubrechen, es sei denn er formatiert, oder?

    Außerdem würde ich anstatt:

    CreateProcess(NULL,"format.com a: /y /q",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
    

    lieber

    CreateProcess(NULL,"format.com a: /y /u",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
    

    verwenden.



  • Würde das nicht reichen wenn alle Daten einfach nur gelöscht werden?
    Also mit DeleteFile undso?
    Oder kann das auch passieren das dieDiskette unformatiert ist?



  • @F98

    er will doch gar nicht abbrechen können.
    die diskette soll formatiert werden, ohne abbruch ohne info des users.
    hat der pech wenn noch wichtige, lebensnotwenidige passwörter auf der disk waren!!! 😃

    Bj



  • Manche halten die User wahrscheinlich für so dumm wie sich selber. Deswegen soll der User ja nix mitkriegen.
    Zwei Punkte:

    1.) Wer nutzt heute noch Disketten als Speichermedium ( ausser zum Knacken von Windows Passwörtern....

    2.) Für wie doof werden manche User von anderen (geistig höhergestellten Wesen) den gehalten ??

    Okay ich hab doch drei Punkte:

    3.) Meine Schwester ist 9 Jahre alt aber sie seit drei Jahren in der Lage eine Diskette zu formatieren. Ist ja auch arg schwer. Rechtsklick formatieren und los gehts.

    :p 🙄 FGGF :p 😉



  • Nein, das Programm wird zum Unterricht in einem Kurs genutzt werden bei dem Leute die den PC noch nie benutzt haben die Diskette als User-ID Disk verwenden werden , ok ² TheGodfather 😡



  • @The Godfather:

    Um sein Programm richtig und unmißverständlich zu gestalten, sollte man immer vom dümmsten User der Welt ausgehen. Das ist eine wichtige Design-Regel.

    Zu deinen drei Punkten: Polemik sollte in einer sachlichen Diskussion nicht verwendet werden. 😉



  • Danke dass du mich verstehst, Grossmeister 😃


Anmelden zum Antworten