![]() |
Microsoft Layer for Unicode (Win9x/ME)
Hallo,
leider habe ich zum Thema Microsoft Layer for Unicode im Forum nur einen einzigen ![]() Zum Problem: Seit ein paar Tagen gibt es von der MediaInfo.DLL die Versionen 0.5.0.0 und 0.5.0.1. In der Readme steht: Zitat:
Mein Programm ist mit Delphi 7 Personal unter WinXP kompiliert und läuft unter WinXP so, wie es soll. Nur unter Win98SE bekomme ich von der MediaInfo.Dll nur die Auskunft 'Not a good file.' Bei der MediaInfo.Dll v0.4.0.1 wurden der Dateiname und die Rückmeldungen als PChar übergeben. Mit den selben Datentypen gab es bei der MediaInfo.Dll v0.5.0.0 die Auskunft 'N'. Als der Rückgabetyp auf PWideChar geändert wurde, gab es die Auskunft 'Not a good file.' Als der Dateiname ebenfalls als PWideChar übergeben wurde, kamen die gewünschten Auskünfte unter WinXP. Deshalb habe ich mal versucht, ob das Problem mit den ![]() Bei Mirosoft gibt es auch ![]() ![]() |
Re: Microsoft Layer for Unicode (Win9x/ME)
Wenn ich Dich richtig verstanden habe, ist das Problem:
Unter C(++) werden die Informationen aus Import-Bibliotheken (LIB) gelesen. Unter Delphi stehen diese Informationen direkt im Quelltext. Es ist also nicht wie bei MSVC mit dem Austausch der LIB getan um alle API-Importe in den Unicode-Layer umzuleiten - Du müsstest angepasste DCUs oder angepaßte Quelltexte (Windows.pas) für Delphi finden... (ich kenne keine Quelle, sorry) |
Re: Microsoft Layer for Unicode (Win9x/ME)
Liste der Anhänge anzeigen (Anzahl: 1)
Die PSDK soll die .LIB für C and C++ enthalten. Ich habe heute mehrere Stunden gegoogelt und nichts für Delphi gefunden. Im jetzt konkreten Fall würde die MediaInfo.Dll v0.4.0.1 ausreichen, weil sie auch die notwendigen Informationen liefert. Ich weiß nicht, wo das Problem nun wirklich liegt. Die Antwort der MediaInfo.Dll ist ja Unicode (PWideChar). Nur die Antwort lässt darauf schließen, dass der Dateiname nicht als Unicode übermittelt wird. Der ist in meinem Programm aber auch PWideChar.
Im Anhang habe ich mal ein reduziertes Projekt (D7PE) mit der MediaInfo.Dll v0.5.0.0. Vielleicht hilft das auch ein wenig, um den richtigen Weg zu finden. |
Re: Microsoft Layer for Unicode (Win9x/ME)
Ich beginne zu verstehen...
Mit dem Versionswechsel von 4 auf 5 wurde die DLL auf Unicode umgestellt (somit benötigt die Version 5 der DLL die Unicode-Erweiterungen für 9x). Die Funktionen MediaInfo_Xxx waren bisher (v4) ANSI (und sind so auch in deinem Projekt verwendet worden). MSLU sollte in Deinem Projekt keine Rolle spielen. Es geht eher darum, sich zu entscheiden zwischen: a) Programmstellen im eigenen Code (der die DLL verwendet) auf Unicode-Parameter umstellen, b) die MediaInfoA_Xxx der DLLv5 zu verwenden und die Import-Unit entsprechend anzupassen c) alles beim Alten (v4) zu belassen [edit] Ergänzung zu b) In der MediaInfoDll_0500.pas alle PWideChar mit PAnsiChar und alle 'MediaInfo_ mit 'MediaInfoA_ ersetzen. Dann solltest Du die 500-er genauso wie die 400-er verwenden können... [/edit] |
Re: Microsoft Layer for Unicode (Win9x/ME)
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Microsoft Layer for Unicode (Win9x/ME)
Ich habe jetzt noch einmal etwas mit der DLL 'gespielt'. Mit der Funktion MediaInfo_Info_Version bekommt man in der 0.4.0.1 den Versionsstring, bei der 0.5.0.0 den Namen der aufrufenden Datei zurück. Sieht so aus, als würde die DLL gerade umstrukturiert und hat deshalb einige Fehler dazubekommen. In der 0.5.0.1 bekommt man keine Informationen mehr über den Videostream.
Dann habe ich mir noch die Win GUIs aus dem Projekt angesehen. Wenn ich die 0.5.0.0 nehme, bekomme ich die Nachricht 'Abnormal program termination.' Die 0.5.0.0 startet zwar, aber es fehlen wie in der DLL-Version die Daten zum Videostream. Fazit: Ich werde die 0.4.0.1 empfehlen und unter Win2000/XP auch die 0.5.0.0 zulassen. Diejenigen, welche mein Programm bisher getestet haben, benutzen fast ausschließlich WinXP. NicoDE, vielen Dank für Deine Hilfe. :thumb: |
Re: Microsoft Layer for Unicode (Win9x/ME)
Nachtrag:
Ich habe die Unit zur statischen Einbindung um die Ansi-Functions erweitert und kann die MediaInfo.DLL v0.5.0.0. so auch mit Delphi 3 nutzen. Mein Test unter Win98SE fiel wiederum negativ aus. Ich denke, der Fehler liegt in der DLL. |
Re: Microsoft Layer for Unicode (Win9x/ME)
Hallo, ich möchte
![]() So einfach ist es sicher nicht, da sich nichts tut. Was muß noch mit rein, damit es läuft ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz