AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Microsoft Layer for Unicode (Win9x/ME)
Thema durchsuchen
Ansicht
Themen-Optionen

Microsoft Layer for Unicode (Win9x/ME)

Ein Thema von Garfield · begonnen am 13. Jan 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#1

Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 14:36
Hallo,

leider habe ich zum Thema Microsoft Layer for Unicode im Forum nur einen einzigen Beitrag von Assarbad gefunden. Das darin vorgestellte Programm soll mit MSLU auch unter Win9x/ME laufen.

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:
WARNING FOR Windows95, Windows98 and Windows Milenium USERS :
-------------------------------------------------------------
The following has to be installed, it enables the Unicode functionality for those OSes.
Microsoft Layer for Unicode on Windows 95/98/ME Systems (MSLU)
http://www.microsoft.com/downloads/d...displaylang=en
Der Download beinhaltet die UnicoWS.dll (the MSLU binary) und die UnicoWS.pdb (which can be used when debugging). Die UnicoWS.dll befindet sich bei mir bereits unter c:\Win98SE\System.

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 TntWare Delphi Unicode Controls zu lösen ist. Aber leider nur Fehlanzeige.

Bei Mirosoft gibt es auch etwas in der PSDK. Aber ich verstehe nicht, wie ich das in meinem Programm umsetzen muss. Vermutlich muss ich nur das umsetzen.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 15:17
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)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 16:39
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.
Angehängte Dateien
Dateityp: rar beispiel_193.rar (469,5 KB, 17x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 16:55
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]
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 20:45
Zitat von NicoDE:
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).
Nach dem Beispielprojekt sollte die 0.4.0.1 auch schon Unicode sein.

Zitat von NicoDE:
a) Programmstellen im eigenen Code (der die DLL verwendet) auf Unicode-Parameter umstellen,
Das hatte ich mit einer TNTListBox und WideString erfolglos versucht.

Zitat von NicoDE:
b) die MediaInfoA_Xxx der DLLv5 zu verwenden und die Import-Unit entsprechend anzupassen
Ich habe in der MediaInfoDll_0500 alle PWideChar in PAnsiChar und den Dateinamen in der Unit1 von WideString auf String geändert sowie in die Stringkonstanten das A eingefügt. Ausnahme ist die MediaInfo_Info_Version. Leider ohne Erfolg. Habe mich an Luckies DLL Export erinnert und nachgesehen.

Zitat von NicoDE:
c) alles beim Alten (v4) zu belassen
Sieht so aus, als müsste ich unter Win9x/ME die 0.5.0.0 ausschließen.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 13. Jan 2005, 21:35
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 14. Jan 2005, 07:04
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
bioser

Registriert seit: 30. Aug 2005
140 Beiträge
 
#8

Re: Microsoft Layer for Unicode (Win9x/ME)

  Alt 28. Sep 2005, 11:57
Hallo, ich möchte uniconv von Assarbad auch gerne unter Windows 98 compilieren. Dazu habe ich den MS Layer for Unicode, bzw. die Dateien "UNICOWS.DLL" und "UNICOWS.PDB" in meinem Projektverzeichnis abgelegt. Die Library "GETUNAME.DLL" im Quelltext habe ich umbenannt in "UNICOWS.DLL".
So einfach ist es sicher nicht, da sich nichts tut. Was muß noch mit rein, damit es läuft ?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz