Moi.
Tässä tuli semmonen huomio, että kun sovelsin tuota esimerkkiä (https://www.ohjelmointiputka.net/keskustelu/1021-mp3-sen-pituus-selville), ettei tuolla tavalla voi selvittää erikoismerkkejä(jopa välimerkkiä) sisältävien kappaleiden pituuden selvitystä. Miten pitäis muokata että toimis?
Kopioi soitettava kappale väliaikaiseen tiedostoon pituuden lukemiseksi.
Esimerkiksi, [asema]:\gappale.mp3:ksi niin ei välilyöntejä, eikä erikoismerkkejä esiinny.
FileCopy "C:\omat musiikit\j33j33\kipale.mp3", "c:\gappale.mp3"
Nipasenmaki: Liian hidas ja aika 'purkka' tapa :D
Tiedoston nimi pitää muuttaa lyhyempään muotoon.
Tässä on esimerkki:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long Private Sub Form_Load() Dim nimi As String * 255 Dim tiedosto As String Dim pituus As String * 255 ' selvitetään tiedoston lyhyt nimi GetShortPathName "c:\musa\Tässä on tiedoston nimi.mp3", nimi, 255 tiedosto = Left(nimi, InStr(nimi, Chr(0)) - 1) MsgBox "Lyhyt nimi: " & tiedosto ' haetaan kappaleen pituus millisekunteina mciSendString "open " & tiedosto & " alias musa", 0, 0, 0 mciSendString "set time format milliseconds", 0, 0, 0 mciSendString "status musa length", pituus, 255, 0 mciSendString "close musa", 0, 0, 0 ' muutetaan aika minuuteiksi ja sekunneiksi Dim minuutit As Integer, sekunnit As Integer sekunnit = pituus \ 1000 minuutit = sekunnit \ 60 sekunnit = sekunnit Mod 60 MsgBox "Kappaleen kesto: " & minuutit & ":" & sekunnit End Sub
Antti Laaksonen: Tarkemmin tutkittuna huomasin, että koodisi nollaa koko tiedostonimen. Tulee vaan ilmotus että nimi on nyt:
Milläs ton saa korjatuks?
Aihe on jo aika vanha, joten et voi enää vastata siihen.