Nur *.avi Datei auswählen

Fredi

Grünschnabel
Hallo,
Wie kann ich dem Programm beibringen,
das es nur *.avi Dateien zuläßt? :confused:
Wenn eine Textdatei gewählt wurde und AVI anklicke dann gibt es eine Fehlermeldung.

Private Sub mnuAVI_Click()
Dim OK%
Dim pfad$

pfad = Datei1.FileName
If pfad = "" Then OK% = MsgBox(" Erst AVI Datei wählen", 320, "Fehler")
If pfad = "" Then Exit Sub

Sound$ = Datei1.Path + "\" + pfad

If Sound$ > "" Then frmAVI.Show

End Sub
 

Fredi

Grünschnabel
Hallo,

erst mal danke für den Hinweis.
Da ich nur wenig Kenntnisse habe, weiß ich nicht so recht, was gemeint ist.
Etwas mehr Code und Kommentare wären sehr hilfreich, damit mir
die Zusammenhänge klar werden.

Vielen Dank im voraus und viele Grüße
Fredi
 

Yaslaw

alter Rempler
Moderator
Du hast ja schon If im einsatz? Wo liegt das Problem?
Ich weiss ja nicht was du machen willst, falls es kein avi ist. Fehlermeldung? einfach nix? Weiter unten in deinem Code fortfahren?

Also, spielen wir mal Erklärbär. Dazu habe ich aus deinem Code alles Sinnlose rausgelöscht und die *.avi-Bedinnung reingenommen
Visual Basic:
Private Sub mnuAVI_Click()
	Dim Sound	As String
	Dim pfad	As String
	
	pfad = Datei1.FileName
	
	If pfad = vbNullString OR Right(pfad, 3) = "avi" Then 
		MsgBox(" Erst AVI Datei wählen", 320, "Fehler")
	Else
		frmAVI.Show	
	End If
End Sub

Nun zu den Detail.

Visual Basic:
Sound$ = Datei1.Path + "\" + pfad

If Sound$ > "" Then frmAVI.Show
Diese Codeabschnitt brungt nicht viel. Zuerst erstellst du einen Stringaus dem Pfad und und fügst ihm ein "\" hinzu. Damit hast du im Minimum einen String "\"
In der nächsten Zeile prüfst du, ob der String leer ist. Kann er nie sein, weil er ja mindestens "\" beinhaltet.
Somit brauchen wir Sound für gar nix.

Visual Basic:
If pfad = "" Then OK% = MsgBox(" Erst AVI Datei wählen", 320, "Fehler")
If pfad = "" Then Exit Sub
Hier prüfst du zweimal das gleiche. Das kann man besser in einen If-EndIf-Block setzen.
Die Variabl OK wird nie ausgewertet. Aslo kann man sie auch weglassen und die Antwort der MsgBox unter den Tisch spühlen. Das OK brauchen wir also auch nicht.

Was habe ich selber nun reingetan?
Visual Basic:
	If pfad = vbNullString OR Right(pfad, 3) = "avi" Then
    ...
END IF
Ich habe die "" durch vbNullString ersetzt. Dies ist eine Konstante von VB6 und ist das gleiche wie "", aber es ist sauberer programmiert.
Dan habe ich die Prüfung auf avi hinzugefügt. Right() nimm mir eine gewisse Anzahl Zeichen eines String von Rechts her gesehen. In unserem Fall die letzten 3 Zeichen des Dateinamens. Diese vergleiche ich mit dem String "avi".

IF THEN
ELSE
END IF
Dieses Konstrukt bitte selber googeln. Das ist das Ein mal Eins jeder Programmierung.

Abschliessend:
Ich weiss nicht woher Datei1.FileName und was frmAVI.Show macht. Wenns da Knallt, können wir dir anhand des von dir geposteten Codes nicht helfen.
 

Fredi

Grünschnabel
Hallo Yaslaw,

erst mal Danke für deine Arbeit.
Unten habe ich alles aufgeführt.
Es geht immer noch nicht richtig.

Gruß Fredi


'Form1
Option Explicit
Dim DateiName As String

Private Sub Form_Load()
Left = (Screen.Width - Width) \ 2
Top = (Screen.Height - Height) \ 2
End Sub

Private Sub Laufwerk1_Change()
Verzeichnis1.Path = Laufwerk1.Drive
End Sub

Private Sub Verzeichnis1_Change()
Datei1.Path = Verzeichnis1.Path
End Sub

Private Sub Datei1_Click()
DateiName = Datei1.List(Datei1.ListIndex)
DateiName = Datei1.Path + "\" + DateiName
End Sub

Private Sub mnuAVI_Click()
Dim OK%

Sound$ = Datei1.Path + "\" + Datei1.FileName

If Right(Datei1.FileName, 3) = "avi" Then 'es ist eine avi-datei
OK% = MsgBox(" Erst AVI Datei wählen", 320, "Fehler")
Else
frmAVI.Show
End If

End Sub

Private Sub mnuEnde_Click()
End
End Sub

'Form2AVI
Private Sub Form_Load()
Left = (Screen.Width - Width) \ 2
Top = (Screen.Height - Height) \ 2

OLE1.CreateEmbed Sound$
OLE1.DoVerb

End Sub

Private Sub mnuEnde_Click()

Sound$ = ""
Form1.Show
frmAVI.Hide
Unload Me
End Sub

'Module1.bas
Public Sound$
 

Yaslaw

alter Rempler
Moderator
Ein Zitat aus meiner Signatur. In deinem Fall währe das [code=vb]...[/code]

Item: Ich lese keinen Code mehr, der nicht formatiert und mindestens in [CODE]..[/CODE] (besser noch den Tag der jeweiligen Sprache) gesetzt ist
Item: Formatiert den Code (auch SQL-Statements) sauber - dann kann man ihn auch lesen

Sorry, aber ich habe echt keinen Bock deinen Code zu formatieren damit ich ihn lesen und verstehen kann.

Nachtrag:
Was geht noch nicht richtig? Fehlermeldung?
 
Zuletzt bearbeitet: