[VB6] CommonDialog: Dateierweiterung herausfinden

Masterclavat

Erfahrenes Mitglied
Hallo, ich bin's mal wieder... :)

...und habe wieder ein kleines "Problemchen".
Und zwar möchte ich mithilfe des "CommonDialogs" einen Dateipfad herausfinden. (CommonDialog1.ShowOpen)
Das funktioniert soweit auch super, da ich jetzt aber diese Datei umbenennen möchte, wollte ich die Dateierweiterung (*.txt usw.) herausfinden, da die Datei ja ohne Angabe der Erweiterung ohne Erweiterung gespeichert wird. (<--Blöder Satz, zumindest der letzte Teil :D)

Also hat einer eine Idee oder sogar die Lösung? Mir reicht auch nur ein kleiner Tipp. :)

MfG Masterclavat
 
Also du hast beim Commondialog die Filtereigenschaft-
Zweitens gibt es als Rückgabe einen string (file) dessen letze 4 Zeichen den Typ ausmachen sollten.
Im schlimmsten Fall kannst du es so machen :
Visual Basic:
Dim FSO as object
dim fil as object 
set FSO = CreateObject("Scripting.Filesystemobject")
set fil = FSO.GetFile(meinfilenameausdemcommondialog) 
call msgbox ("der Filetype ist =" & fil.Type)

wenn das alles nicht das ist was du brauchst habe ich deine Frage nicht verstanden. (Da bin ich mir sogar sicher dass ich die nicht verstanden habe)

Grüsse bb
 
Das ist schon mal sehr gut, aber noch nicht ganz das was ich suchte.

Also der Code von dir gibt folgendes aus, wenn ich eine Datei mit dem Namen "Test.txt" auswähle:

Visual Basic:
der Filetype ist =Textdokument
Ich wollte es eher so:
Visual Basic:
Die Dateiendung ist .txt

Ich hoffe man versteht das, wie ich es diesmal erklärt habe. :)

mfG Masterclavat
 
Besser wäre:
Visual Basic:
'Ich leg hier mal den gesamten Namen fest
sDateiname = "C:\Pfad\Datei.txt"
'Erweiterung (ohne "." herausfinden)
sExt = Right(sDateiname, Len(sDateiname) - InStrRev(sDateiname, "."))
Da ist es egal, wie lang die Extension ist (müssen ja nicht immer 3 Buchstaben sein). Du solltest halt noch abfragen, ob überhaupt eine Extension vorhanden ist.


Der Doc!
 
Ich habe mir das Beispiel von Dir, Doc, mal angesehen und ausprobiert, jedoch funktioniert es nur wenn die Datei eine Erweiterung hat. (Habe es so gemacht...)

Visual Basic:
Private Sub Form_Load()
...
...
...
 Name DateiPfadAlt As OrdnerPfadNeu & DateiNameNeu & "." & Endung
...
...
End Sub

Private Sub DateiExtention()
 Endung = Right(DateiNameAlt, Len(DateiNameAlt) - InStrRev(DateiNameAlt, "."))
End Sub

Alles was ich jetzt noch abfragen müsste, wäre, ob die Datei eine Erweiterung hat oder nicht. Aber ich finde einfach keine Funktion dafür.

Kennt jemand eine Funktion mit der ich prüfen kann, ob ein "." in dem String enthalten ist?
Existiert eine solche überhaupt? Wenn es sie geben sollte, wäre ich froh, wenn man mir mein Problem nicht völlig auflösen könnte, sondern nur ein Tipp geben würde.
Damit ich noch was lerne. :)

Wenn mein Ansatz jedoch völlig falsch ist, könnt ihr mich ja darauf hinweisen und euren Ansatz/ eure Lösung posten. :)

Mfg Masterclavat
 
Wie gesagt, du müsstest ja erstmal feststellen, ob die Datei überhaupt eine Erweiterung hat. Man könnte das ganze ja in eine Funktion pressen:
Visual Basic:
Function GetExtension (ByVal sFilename As String) As String
 Dim iExt As Integer

 'Die Position des letzten Punktes bestimmen
 iExt = InStrRev(sFilename, ".")

 'Punkt vorhanden?
 If iExt > 0 Then
  GetExtension = Right(sFilename, Len(sFilename) - iExt)
 Else:
  GetExtension = ""
 End If
End Function
Aufruf würde dann so erfolgen:
Visual Basic:
 Erweiterung  = GetExtension("C:\Ordner\Datei.txt")
Du kriegst dann die Erweiterung zurück, wenn keine vorhanden ist, kriegst du nicht zurück.


Der Doc!
 
Danke Doc. Klappt wie ich es mir vorgestellt habe. :)

Und auch vielen Dank an Brainbyte, dass du dir Zeit für mein Problem genommen hast. :)
 

Neue Beiträge

Zurück