Español
Foro

FLOAT como Rückgabewert de el AudioGenie.DLL

 
- Página 1 -



Georg
Hovenbitzer
¡Hola zusammen,

Yo folgendes Problema:
El Función AUDIOGetDuration liefert como Rückgabewert una FLOAT Valor.
Diesen bekomme Yo simplemente no gefasst, en me se meistens el Biterate adecuado.
Der Programmierer el DLL Stefan Töngi war así freundlich y ha unos pocos Test durchgeführt y schrieb entonces.



Hi,

habe ahora otra vez en el Debug-Mode dein Beispielprojekt laufen dejar y el DLL-Características voluntad korrekt aufgerufen.
Auch el Rückgabewerte a Profano son korrekt. Anscheinend musst du todavía explizit el Rückgabewerte angeben,
porque en el otro korrekten Aufrufen voluntad überall LONG-Variables verwendet, sólo en Duration se una FLOAT zurückgegeben. Tal vez se como intern qué falso interpretiert.
Schau veces en el Profano Foro después de DLL y FLOAT, como findest du determinado qué passendes...


Tal vez könnt ihr me helfen. (Yo bin me como eigentlich muy sicher )

Ach sí, el DLL bekommt ihr bajo www.audiogenie.de
KompilierenMarcaSeparación
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
24.06.2008  
 



 
- Página 1 -



Dieter
Zornow
Yo habe veces deinen Code ausprobiert y una bischen experimentiert, como Yo damals como Stefan Töngi el erste Versión, hieß damals todavía MP3Reader.dll herausbrachte , viel así gemacht habe.

Das Ergebnis war aber siempre el gleiche, Yo bekam auch siempre el Biterate adecuado, habe en el MP3 ´s con verschieden Biteraten ausprobiert. Yo denke hier es entweder en Profano oder en el Dll algo faul.
Es aber ya seltsam, dass siempre exakt el Biterate zurückkommt. Yo denke, dass el Dll ya beim analysieren todos erkannte Werte en el Speicher hinterlegt y tal vez valor de el falschen Zona zurückgibt. Dürfte pero no así ser, como se entonces ya determinado viele User gemeldet hätten.

Relacionado con la Float-Zona kannst du dir wahrscheinlich sparen. Un einfache Float-Variable liefert el gleichen Valor.

Gruss

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
24.06.2008  
 



¿Puede veces una Screenshot de
KompilierenMarcaSeparaciónhacer?
 
24.06.2008  
 




RGH
¡Hola!

Gibt el DLL una 64- oder una 32-Bit-Fließkommawert zurück?

Wenn lo una 64-Bit-Fließkommawert es, se lo con XProfan no ir. ¿Es una 32-Bit-Valor, qué wahrscheinlicher es, kannst Usted ihn primero en un Longint speichern (= 32 Bit) y luego con el Función @Float() en una Fließkommawert XProfanscher Prägung (Double = 64 Bit) umwandeln.

La idea con el Bereichsvariablen sería entonces trabajo, si no Valor incluso, pero dessen Adresse (Zeiger) zurückgegeben sería. Ein Verfahren, el zwar auch häufig anzutreffen es, aber vermutlich no en diesem Fall.

Saludo
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
24.06.2008  
 




Georg
Hovenbitzer
¡Hola zusammnen,

vielen Dank para el Test y Tips.

@If
Der Screenshot hängt a, lo kommen dreimal el gleichen Werte fuera.

@Roland
Yo hoffe, Yo deine Ausführungen correcto umgesetzt.
Hierbei kommt lo siempre a uno Schutzverletzung beim Intento el Umwandlung en una Fließkommawert.
Yo habe beim Entwickler el DLL veces angefragt si una 64Bit oder 32Bit Valor zurück gegeben se.
KompilierenMarcaSeparación
Def AUDIOAnalyzeFile(1) !AudioGenie2.dll,AUDIOAnalyzeFile
Def AUDIOGetDuration(0) !AudioGenie2.dll,AUDIOGetDuration
Def MultiByteToWideChar(6) !KERNEL32.DLL,MultiByteToWideChar

Proc ToWide

    Parameters Original$
    Var L& = @Len(Original$)
    Var Ziel$ = @Space$((L& * 2))
    MultiByteToWideChar($0,$1,@Addr(Original$),L&,@Addr(Ziel$),(L& * 2))
    Return Ziel$

EndProc

Proc _AUDIOAnalyzeFile

    Parameters Pfad$
    Pfad$ = ToWide(Pfad$)
    Return AUDIOAnalyzeFile(@Addr(Pfad$))

EndProc

Proc _AUDIOGetDuration

    Declare Ret#
    Dim Ret#,8
    Float Ret#,0 = AUDIOGetDuration()
    Var Ret! = @Float(Ret#,0)
    Dispose Ret#
    Return Ret!

EndProc

Proc _Roland

    Var Ret& = AUDIOGetDuration()
    Var Ret! = @Float(Ret&,0)
    Return Ret!

EndProc

Declare ID3DLL&, Ende&, File$
Window 100,100-800,600
ID3DLL& = @UseDLL(AudioGenie2.dll)

WhileNot Ende& = 1

    WaitInput

    If %Key = 13

        File$ =
        File$ = @LoadFile$(ÖFFNE,*.mp3)
        Cls
        Print Gültige MP3 Datei = ,_AUDIOAnalyzeFile(File$)
        Print
        Print Duration = ,_AUDIOGetDuration()
        Print
        Print Lösungsvorschlag = ,_Roland()
        Print

    ElseIf %Key = 2

        Ende& = 1

    EndIf

EndWhile

FreeDLL ID3DL
class=s4 href='./../../funktionsreferenzen/XProfan/end/'>End

22 kB
Kurzbeschreibung: Screenshot
Hochgeladen:26.06.2008
Ladeanzahl122
Descargar
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
26.06.2008  
 



Wenn AUDIOGetDuration() tatsächlich Drei veces en Folge 192 ausgibt es zumindest klar, dass hinter diesem Valor no Duration zurückgeliefert se, oder Position 0 con 192 Bit gemeint es.
 
26.06.2008  
 




Dieter
Zornow
Yo habe veces deinen Code getestet, en me kommt gar nichts, stürzt beim Aufruf igual de. Yo habe me de tiempo el Delphi-Wrapper geladen, danach es en Delphi una Single - Variable 4 bytes groß. Yo habe pero no Idea como el en Profano umzusetzen es.
Allgemein Es el Dll lo que el Ein - y Edición betrift muy schlecht dokumentiert, deshalb es el Wrapper nützlich uno sieht zumindest qué esperado se z.B. Unicode
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.06.2008  
 




RGH
Georg Hovenbitzer
@Roland
Yo hoffe, Yo deine Ausführungen correcto umgesetzt.


Ähem ... Sí y Nein ... dfenn Yo Usted el falsche Función genannt. No @Float(), pero @Double() war gemeint. El macht de uno 32-Bit-Fließkommazahl (gespeichert en el Integer) una 64-Bit-Fließkommazahl. Versuche also veces
KompilierenMarcaSeparación
<...>
Var Ret& = AUDIOGetDuration()
Var Ret! = @Double(Ret&)
<...&
pre>

Saludo
Roland

(Desde que el DLL momentan no hier habe, kann Yo no inmediatamente testen.)
 
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
26.06.2008  
 




RGH
Apéndice:

Yo habe ahora el DLL en me installiert. Gemäß el en el Homepage el DLL vorhandenen ausführlichen Alemán Documentación ( [...]  ) müßte mi Solución trabajo. Tut ellos pero no. ¿Es posible, dass no todos MP3 el Information en Longitud en el Form enthalten, el el DLL auswertet?
Für wahrscheinlicher halte Yo aber una Fehler en el DLL, como definitiv siempre el Bitrate ausgegeben se. Hier mein kleines Testprogramm:
KompilierenMarcaSeparación
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&)
Tmp& = My_AUDIOGetFileSize(Tmp&)
Print Größe (Bytes) =  + Str$(Tmp&)
Tmp& = My_AUDIOGetBitrate(Tmp&)
Print Bitrate =  + Str$(Tmp&)
Tmp& = My_AUDIOGetSampleRate(Tmp&)
Print Samplerate =  + Str$(Tmp&)
Tmp& = My_AUDIOGetChannels(Tmp&)
Print Kanäle =  + Str$(Tmp&)
Tmp& = My_AUDIOGetDuration()
Print Dauer (Sekunden) =  + Str$(Double(Tmp&))
Tmp& = My_AUDIOGetLastErrorNumber(Tmp&)
Print Letzter Fehler =  + Str$(Tmp&)
WaitInput
FreeDLL Dll
lass=s4 href='./../../funktionsreferenzen/XProfan/end/'>End

Saludo
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
26.06.2008  
 



El Dauer uno MP3 es mi humilde opinión reine Berechnungssache, Anzahl Bits dividiert por bits/s.

Auf [...]  es liefert el Spieldauer en Sekunden, es así el Gesamtspieldauer o aktuell-ya-vergangene-Spieldauer gemeint?
 
26.06.2008  
 




RGH
IF
El Dauer uno MP3 es mi humilde opinión reine Berechnungssache, Anzahl Bits dividiert por bits/s.

Auf [...]  es liefert el Spieldauer en Sekunden, es así el Gesamtspieldauer o aktuell-ya-vergangene-Spieldauer gemeint?


Selbst si el gespielte Dauer en Sekunden wäre, dürfte beim no gestarteten Song no el Bitrate (como 32-Bit-Integer) en el Ergebnis posición, dass gemäß Doku una 32-Bit-Single es.

Sehr seltsam, el Ganze ...

Saludo
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
26.06.2008  
 



RGH
Selbst si el gespielte Dauer en Sekunden wäre, dürfte beim no gestarteten Song no el Bitrate (como 32-Bit-Integer) en el Ergebnis posición, dass gemäß Doku una 32-Bit-Single es.

Sehr seltsam, el Ganze ...

Saludo
Roland


Ist doch klar, lo wirkt como wäre hier de una Register elaborado qué zuvor para Berechnungen nötig war - podría also ser el lo una Folgefehler es porque no genügend vom Stack abgeholt se.

Mit una wenig Inlineassembler bekommt al determinado rápidamente heraus. (Franco? Könntest Usted Por favor, veces... tener mein inlineasm grad abgeschossen...) *g*
 
26.06.2008  
 



 
- Página 2 -



Georg
Hovenbitzer
@If
Lo se hier wohl el Gesamtspieldauer gemeint ser, como lo en el OCX Versión así es.
El Función klappt hay auch y se de me @Double umgesetzt.
El esta entstehenden Veces stimmen auch

@Roland
Stefan ha en mi Cuestión ya geantwortet:
>> Hi, en una 32bit float de C++ heraus. <<
Kommt de folgendem Forumsbeitrag: [...] 
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
26.06.2008  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.029 Views

Untitledvor 0 min.
Gast.0815 vor 14 Tagen
Erasmus.Herold13.11.2018
Michael Borowiak19.12.2012

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie