Hallo Ihr freundlichen Antworter,
herzi hat folgendes geschrieben: |
Moin und Hmmm,
gleiches Problem bei mir auch.
Per WMP.mediaCollection.add() kannste das Problem aber hoffentlich umgehen. Fehlercode ist "'ungültiger Variant-Typ". |
WMP.mediaCollection.add() geht zwar mit MP3s, aber z.B. nicht mit OGGs, da man die im WMP nicht in die Mediendatenbank aufnehmen kann. .newMedia() kennt (theoretisch...) alle Dateitypen, für die im System ein Codec installiert ist, .mediaCollection.add() nur diejenigen, die mehr oder weniger WMP-nativ sind.
Der Fehlercode deutet ja darauf hin, dass das ActiveX-Control eher etwas anderes als einen String (oder auch einen WideString, das habe ich bereits getestet) erwartet. Nur -
was?
ase hat folgendes geschrieben: |
- Liegt es daran, dass ihr dieser Methode einen String übergibt? Wolln die nicht immer WideString haben? Oft wollen die auch einen VariantArray haben. Kopier doch mal die Definition der Methode hier rein.
- is WMP auch <> nil? |
Hier ist die Definition aus der WMPLib_TLB.pas:
Delphi-Quelltext
1: 2: 3: 4:
| function TWindowsMediaPlayer.newMedia(const bstrURL: WideString): IWMPMedia; begin Result := DefaultInterface.newMedia(bstrURL); end; |
Aber wer weiß, ob Delphi die richtig importiert hat? Das
SDK redet nur von einem "String", aber was versteht MS unter einem "String"? Wie definierst Du den VariantArray? Diese ganzen unterschiedlichen Typen für Strings - normale und kurze und lange und nullterminierte und Zeiger auf Strings und was auch immer noch alles - gehen mir ziemlich auf den Keks. Ich war eigentlich lange Zeit eher Pascal(Gott hab es selig!)/Delphi-only und habe mich um API-Funktionen herzlich wenig geschert. Jetzt muss ich jedesmal überlegen, was für Typen die Funktionen eigentlich übergeben haben wollen ...
WMP ist definitiv <> nil, WMP ist eine visuelle Komponente im Form und lässt sich auch ansonsten problemlos steuern.
Kleine Ergänzung, folgendes habe ich in
Google Groups gefunden:
Zitat: |
I just make it to work using "CComBSTR" instead of "unsigned short filename[MAX_PATH]" for the filename variable. But I don't understand why array of shorts won't work for newMedia. |
Was zum Teufel ist ein CComBSTR in Delphi (siehe mein Kommentar oben

)??
Grüße,
Florian