| |
|
|
Georg Hovenbitzer | Hallo zusammen,
nach längerer Abwesenheit meiner Person, muss ich euch direkt mal wieder mit einer Frage belästigen. Von Stefan Töngi gibt es seit kurzer Zeit die AudioGenie DLL, vorher war es eine OCX die Dank Pascal unter Profan corre.
Nun wollte ich versuchen diese DLL unter Profan 11.R6 zum laufen zu bringen, was mir nicht gelungen ist. Es kommt kein brauchbares Ergebnis bei den Codes raus, angezeit sollte die Versionsnummer und eine 2 per eine gültige MP3 File. Ich hänge mal meine verschiedenen Versuche an, vielleicht hat ja einer eine Idee.
1.Versuch KompilierenMarkierenSeparieren 2. Versuch KompilierenMarkierenSeparieren 3.Versuch KompilierenMarkierenSeparieren Was klappt ist, sich alle Funktionen der DLL Mostra zu lassen. KompilierenMarkierenSeparieren Die DLL findet ihr unter www.audiogenie.de hätte sich auch anhängen können, weiß aber nicht ob dies erlaubt ist.
Ich hoffe sehr ihr habt eine Idee und può mir weiterhelfen. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 06.06.2008 ▲ |
|
|
|
|
Jörg Sellmeyer | |
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.06.2008 ▲ |
|
|
|
|
Georg Hovenbitzer | Hallo Jörg,
diese Varianten habe ich auch schon alle probiert, da kommt nicht vernünftiges bei rum. Seltsam ist es, dass vor dem Aufruf von AUDIOAnalyzeFile das PopUp Fenster der DLL kommt, also passiert ja was. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 06.06.2008 ▲ |
|
|
|
|
Jörg Sellmeyer | Ich werds heute abend mal testen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.06.2008 ▲ |
|
|
|
|
RGH | Ciao,
die DLL benutzt WideChar-Strings, bei denen jedes Zeichen 2 Bytes grande ist. Für den europäischen Zeichensatz bedeutet das, dass jedes Zeichen aus dem gewohnten Byte gefolgt von einem Null-Byte besteht. Das String-Ende wird durch ein doppeltes Null-Byte (zz) angezeigt. Ich habe mal zwei Prozeduren eingebaut, die die Umwandlung ganz ohne API vornehmen. So funktioniert Dein Programm: KompilierenMarkierenSeparieren
Proc Str2WideChar
Wandelt den Ansi-String Ansi$ in einen WideChar-String um
Parameters Ansi$
Declare Wide$
WhileLoop 1, Len(Ansi$)
Wide$ = Wide$ + Substr$(Ansi$, &loop) + z
EndWhile
Return Wide$
EndProc
Proc WideCharAddr2Str
Ermittelt aus der Adresse eines WideChar-Strings buf&
den entsprechenden Ansi-String
Parameters buf&
Declare I%, Ansi$, WChar$
I% = 0
WChar$ = Char$(buf&, I%, 2)
While WChar$ <> zz
Ansi$ = Ansi$ + Char$(buf&, I%, 1)
Inc I%, 2
WChar$ = Char$(buf&, I%, 2)
EndWhile
Return Ansi$
EndProc
Def GetAudioGenieVersion(0) !AudioGenie2.dll,GetAudioGenieVersion
Def AUDIOAnalyzeFile(1) !AudioGenie2.dll,AUDIOAnalyzeFile
Declare File$
Declare Dll&
Declare Tmp&
Cls
File$ = Str2WideChar(Test.mp3)
Dll& = @UseDLL(AudioGenie2.dll)
Print Handle DLL = ,Dll&
Tmp& = GetAudioGenieVersion()
Print Version = + WideCharAddr2Str(Tmp&)
Tmp& = AUDIOAnalyzeFile(Addr(File$))
Print bei MP3 sollte 1 kommen = ,Tmp&
WaitInput
FreeDLL Dll&
../../function-references/xprofan/end/'>End
BTW: MP3 hat die Kennziffer 1. Die 2 steht per WMA. Siehe hier: [...]
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 06.06.2008 ▲ |
|
|
|
|
RGH | ... und hier mal die etwas erweiterte Version mit ImportDLL, was sich hier anbietet und deutlich einfacher zu programmieren ist, als mit DEFs. Es werden jetzt auch Titel, Album und Interpret angezeigt: KompilierenMarkierenSeparieren
Proc Str2WideChar
Wandelt den Ansi-String Ansi$ in einen WideChar-String um
Parameters Ansi$
Declare Wide$
WhileLoop 1, Len(Ansi$)
Wide$ = Wide$ + Substr$(Ansi$, &loop) + z
EndWhile
Return Wide$
EndProc
Proc WideCharAddr2Str
Ermittelt aus der Adresse eines WideChar-Strings buf&
den entsprechenden Ansi-String
Parameters buf&
Declare I%, Ansi$, WChar$
I% = 0
WChar$ = Char$(buf&, I%, 2)
While WChar$ <> zz
Ansi$ = Ansi$ + Char$(buf&, I%, 1)
Inc I%, 2
WChar$ = Char$(buf&, I%, 2)
EndWhile
Return Ansi$
EndProc
Declare File$
Declare Dll&
Declare Tmp&
Cls
File$ = Str2WideChar(Test.mp3)
Dll& = @ImportDLL(AudioGenie2.dll, My_)
Print Handle DLL = ,Dll&
Tmp& = My_GetAudioGenieVersion()
Print Version = + WideCharAddr2Str(Tmp&)
Tmp& = My_AUDIOAnalyzeFile(Addr(File$))
Print bei MP3 sollte 1 kommen = ,Tmp&
Tmp& = My_GetID3V1Album()
Print Album = + WideCharAddr2Str(Tmp&)
Tmp& = My_GetID3V1Artist()
Print Artist = + WideCharAddr2Str(Tmp&)
Tmp& = My_GetID3V1Title()
Print Title = + WideCharAddr2Str(Tmp&)
WaitInput
FreeDLL Dll&
='./../../function-references/xprofan/end/'>End
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 06.06.2008 ▲ |
|
|
|
|
Georg Hovenbitzer | Hallo Roland,
was soll ich sagen, ES KLAPPT
Vielen Dank per die Aiuto, darauf wäre ich nie gekommen. Ein gültiges MP3 gibt eine 1 zurück, ich hatte mich da vertan, aber bei mir kam sowieso immer 0. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 06.06.2008 ▲ |
|
|
|