TSaveDialog fehlende Dateiendung automatisch an Dateinamen hängen?



  • Servus,

    sollte der TSaveDialog nicht automatisch eine Endung, je nach ausgewähltem Filter an den DAteinamen hängen, wenn keine vorhanden ist? Wenn ja.... Irgendwie macht das meiner nicht oO Muss man normalerweise irgendwas aktivieren?

    Ok Frage ohne Quelltext. Aber wenn er es nciht automatisch macht brauch ich meinen Quellcode nicht auszupacken... Dann muss mir nur ejmand sagen welche Optionen ich setzen muss.



  • Hallo

    Nein das macht TOpenDialog gar nicht. Denn das wird spätestens dann scheitern wenn der ausgewählte Filter mehrere mögliche Erweiterung enthält.
    Du must also manuell die richtige Erweiterung anhängen.

    bis bald
    akari



  • Ok jetzt schlag mich bitte nicht akari. 😕

    Wie komm ich nun an den aktiven Filer?

    void __fastcall TForm1::SaveDlgClose(TObject *Sender)
    {
    	if(ExtractFileExt(SaveDlg->FileName).Length()==0) {
    	   switch(SaveDlg->FilterIndex)
    	   {
    		   case 0: {
    				  SaveDlg->FileName=SaveDlg->FileName+".csv";
    				  break;
    		   }
    		   case 1: {
    				  SaveDlg->FileName=SaveDlg->FileName+".txt";
    				  break;
    		   }
    		   case 2: {
    				  SaveDlg->FileName=SaveDlg->FileName+".html";
    				  break;
               }
           }
    	}
    }
    

    Das war mein Ansatz. Nur irgendwie spring der Filter Index nicht mehr von 2 runter. So ein Mistvieh.... Egal welchen Filter ich aktiviere.

    Aus dem Konstruktor des Forms:

    // Optionen setzen. Nachfrage beim Überschreiben der Dateien.
    SaveDlg->Options << ofOverwritePrompt;
    //Festlegen des Datei Typ Filters. CSV, TXT und HTML möglich.
    	SaveDlg->Filter = "CSV Files (*.csv)|*.CSV|Text Files (*.txt)|*.TXT|HTML Files (*.html)|*.HTML";
    //Index des beim Öffnen ausgewählten Filters.
    	SaveDlg->FilterIndex=0;
    

    EDIT: UH OH Mir fällt grade auf, daß mein Save Thread noch Case Sensitive ist. Und die Abfrage hier auch. Na da sollt ich aber nicht vergessen was zu drehen.



  • Vielleicht liegt es daran, dass FilterIndex bei 1 beginnt. 0 gibt es nicht.



  • URK!!!! Ich hab zuviele Indizes laufen. *nachschaut*


Anmelden zum Antworten