Jacek K.

Jacek K. Software Developer,
Telecetera Ltd.

Temat: projekt mono i delphi 8

proboje uruchomic aplikacje napisana pod delphi 8 w srodowisku Linux
niestety, w kilku z unitow pokazuja mi sie nastepujace bledy:

Borland.Vcl.SysUtils.Unit ---> System.EntryPointNotFoundException: GetVersionEx
at (wrapper managed-to-native) Borland.Vcl.Windows.Unit:GetVersionEx (Borland.Vcl.Windows._OSVERSIONINFO&)
at Borland.Vcl.SysUtils.Unit.InitPlatformId () [0x00000]
at Borland.Vcl.SysUtils.Unit.Borland.Vcl.SysUtils () [0x00000]
at Borland.Vcl.SysUtils.Unit..cctor () [0x00000] --- End of inner exception stack trace ---

at (wrapper managed-to-native) System.Runtime.CompilerServices.RuntimeHelpers:RunClassConstructor (intptr)
at System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor (RuntimeTypeHandle type) [0x00000]
at Borland.Vcl.Math.Unit..cctor () [0x00000] --- End of inner exception stack trace ---
....

spotkal sie ktos z takim problemem?
Jacek G.

Jacek G. ośrodek
badawczo-rozwojowy
elektroenergetyki

Temat: projekt mono i delphi 8

Dla uściślenia problemu (ta sama aplikacja) załączam wynik z MoMA Scan (przeprowadzony pod openSUSE 10.3 i686-3.1; MONO 1.9.1; LiveCD):

Analysis Summary:
V All methods called exist in Mono.
X P/Invokes called: 6
V No methods that throv NotImplemented Exception are called.
X Methods called marked with [MonoTodo]: 2

Calling Method - P/Invoke Method - External DLL

Class Borland.Vcl.SysUtils.Unit:
1. int LCIDToCodePage(uint) - int GetLocaleInfo(uint, uint, StringBuilder, int) - kernel32.dll
2. int LCIDToCodePage(uint) - uint GetACP() - kernel32.dll
3. void @86$InitSysLocale$InitLeadBytes($Unnamed1&) - LongBool GetCPInfo(uint, _cpinfo&) - kernel32.dll
4. void InitSysLocale() - int GetSystemMetrics(int) - user32.dll
5. void InitSysLocale() - int GetSystemMetrics(int) - user32.dll
6. void InitPlatformId() - LongBool GetVersionEx(_OSVERSIONINFO&) - kernel32.dll

Reszta problemów dotyczy walidacji plików XML i jest oznaczona jako [MonoTodo].

Czy są jakies szanse na ominięcie kłopotów z tym modułem (SysUtils nie jest deklarowany wprost, najwyraźniej odwołujej się do niego któryś z użytych komponentów) przy rozsądnym nakładzie sił i środków?
Stanisław P.

Stanisław P. Software designer

Temat: projekt mono i delphi 8

Jacek G.:
6. void InitPlatformId() - LongBool GetVersionEx(_OSVERSIONINFO&) - kernel32.dll

Na tym wię wywalił - chyba nie będzie trudno napisać implementacji ;)

Takie małe funkcje łatwo jest podstawić. Poczytaj:
http://www.mono-project.com/DllMap
Musisz ją po prostu zaimplementować w .so i będzie ok.Stanisław Pitucha edytował(a) ten post dnia 11.06.08 o godzinie 10:51
Jacek G.

Jacek G. ośrodek
badawczo-rozwojowy
elektroenergetyki

Temat: projekt mono i delphi 8

Stanisław Pitucha:
Na tym wię wywalił - chyba nie będzie trudno napisać implementacji ;)
...a to się jeszcze okaże... :)
Serdeczne dzięki za podpowiedź! Okazuje się jednak, że na razie inne priorytety projektu odkładają ten problem na tzw. 'lepsze czasy'. Wrócę na konsultacje gdy tylko sprawa dojrzeje i całość zacznie prawidłowo funkcjonować na 'jedynie słusznyM Systemie'... ;)
Pozdrawiam.

konto usunięte

Temat: projekt mono i delphi 8

Delphi wykorzystuje natywne dll, których na linuxie nie ma bo borland ma w nosie z punktu biznesowego takie "ezoteryczne" systemy jak linux.

Proponuje zapomnieć o Object Pascalu implementowanym tylko przez Brolanda i przejść na bardzie multiplatformowe języki i frameworki (java/c#/c++). Proba multiplatformowego programu w delphi musi byc skaza na porazke. mi osobiście przypomina to sytuacje z 1998 roku, kiedy Microsoft zaimplementował Java z natywnymi klasami tylko pod Windows. Myślałem, że takie błędy nie będą powtarzane...

Następna dyskusja:

Instalacja MONO




Wyślij zaproszenie do