Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pcler
Beiträge: 13
Registriert: Fr 8. Mär 2013, 22:16

Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von pcler »

Hallo zusammen,

ich habe mit Lazarus RC1.0 und den Zeos-Kompomenten 7.0.3-stable (sqllite3) eine kleine Anwendung für Win32 geschrieben,
die sich ohne Probleme kompilieren lässt und auch unter Windows XP läuft.

Jetzt habe ich den Compiler auf WinCE mit arm-CPU umgestellt und erhalte die Fehlermeldung
....src/core/ZCompatibility.pas(430,33) Error Identifizier not found "AnsiToStringEx"

Kennt jemand dieses Problem oder was mach ich falsch, andere Anwendungen ohne die Zeos-Komp.
lassen sich ohne Probleme auf CE umstellen und laufen auch.

Gruß
pcler

pcler
Beiträge: 13
Registriert: Fr 8. Mär 2013, 22:16

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von pcler »

ich habe mal Lazarus auf Version 1.0.6 hochgerüstet.
Das Problem bleibt leider bestehen....

Beim Durchsuchen der Zeos-Source-Files habe ich Funktion "AnsiToStringEx" in ZEncoding.pas gefunden.
Wird aber nur bedingt compiliert. Ich kenne leider nicht die Zusammenhänge, wann was eingebunden wird.
Hat damit jemand Erfahrung?


Gruß
pcler

pcler
Beiträge: 13
Registriert: Fr 8. Mär 2013, 22:16

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von pcler »

ich bin jetzt soweit durchgestiegen, dass ich die Unicode-Unterstützung ausschalten
muss.

Wie funktioniert das bei WInCE und was gibt es dabei zu beachten?

Gruß
pcler

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von EgonHugeist »

Hi pcler,

weder noch ))):

Also die function sollte eigentlich nicht persistent sein. Mein Problem: Kann es nicht selber testen ):

Also unter FPC 2.6.x und drunter, sollten mit LCL eigenlich nur die LConvEncoding Funtionen erreichbar sein. Mir scheint da fehlt ein {$IFDEF WinCE}??

AFAIK sollte mit WinCE nur im UTF8-Modus gearbeitet werden können. Lieg ich da richtig? Ich weis ich habe die Unit ZEncoding.pas und ZComaptibility.pas mit ner Menge {$ifdef ..}'s versehen. Kannst du mal drüber schauen, wo da noch was fehlt? Patch wäre toll.

Gruß Michael, ZeosDevTeam

P.S. Sorry bin grad im Umzugstress, kann grad echt nicht helfen..

Edit: das könnte auch einfach in der Zeos.inc erledigt werden???
ZeosDevTeam

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von EgonHugeist »

Kannst du mal folgendes testen?

ZeosLazarus.inc:

{$IF defined(WITH_LCONVENCODING) and ((defined(MSWINDOWS) and not defined(WinCE)) or defined(FPC_HAS_BUILTIN_WIDESTR_MANAGER))}
{$UNDEF WITH_LCONVENCODING}
{$IFEND}

dann alles recompilieren..
ZeosDevTeam

pcler
Beiträge: 13
Registriert: Fr 8. Mär 2013, 22:16

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von pcler »

hallo EgonHugeist,

ich hab's mal getestet und erhalte die gleiche Fehlermeldung...

ich habe mal folgendes versucht um sicher zu sein, dass WInCE auf jeden Fall greift
{$IF defined(WinCE)}
{$UNDEF WITH_LCONVENCODING}
{$IFEND}

dies führt zu folgender Fehlermeldung
ZPlainLoader.pas(189,47) incompatible type for arg no. got "pchar" ecpected "pwidechar"

dieser Fehler wurde schon in einem Forum besprochen, ich finde aber leider nicht mehr in welchem

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von EgonHugeist »

Nun denke ich hast du mich und meine Änderung falsch verstanden.

AnsiToStringEx/StringToAnsiEx ist in jedem Falle vorhanden für:

FPC2.7+
Alle Delphi-Compiler
FPC2.6 down wenn das OS Windows ist. WinCE sollte hierbei aussscheiden, da die Windows-Function MultiByteToWideChar/WideCharToMultiByte nicht existieren sollten. Ist das richtig? Habe diese info von FPC-Unit cwstring..

Also sollte WITH_LCONVENCODING für deinen FPC-Compiler und dein LCL definiert sein. Also nicht undef.

Sei so gut und teste es bitte.......
ZeosDevTeam

pcler
Beiträge: 13
Registriert: Fr 8. Mär 2013, 22:16

Re: Problem bei kompilieren von ZEOS 7.0.3 für WinCE

Beitrag von pcler »

sorry das ich mich erst jetzt melde,

hab mal auf Lazarus 1.1 mit FPC 2.7.1 hochgerüstet, leider kann ich damit keine WinCE - Applikationen kompilieren,
und deshalb nicht testen (Lazarus ist da wohl noch im Bau). Wie man unter Lazarus 1.0 FPC 2.7 zum laufen bekommt,
habe ich leider noch nicht rausgefunden. Vieleicht kennst du ja ein Tutorial.


In der ZEncoding.pas habe ich folgendes gefunden

Code: Alles auswählen

{$IFDEF WITH_LCONVENCODING}
const
  ZLConvCodepages: array[0..16] of Word = (
    28591,  //ISO_8859_1
    28592,  //ISO_8859_2
    1250,   //WIN1250
    1251,   //WIN1251
    1252,   //WIN1252
    1253,   //WIN1253
    1254,   //WIN1254
    1255,   //WIN1255
    1256,   //WIN1256
    1257,   //WIN1257
    1258,   //WIN1258
    437,    //CP437
    850,    //CP850
    852,    //CP852
    866,    //CP866
    874,    //CP874
    20866   //KOI8 (Russian)
    );
 
function IsLConvEncodingCodePage(const CP: Word): Boolean;
procedure SetConvertFunctions(const CTRL_CP, DB_CP: Word;
  out PlainConvert, DbcConvert: TConvertEncodingFunction);
 
{$ELSE}
 
{$IFDEF WITH_UNICODEFROMLOCALECHARS}
const
  MB_PRECOMPOSED = 1; { use precomposed chars }
  MB_COMPOSITE = 2; { use composite chars }
  MB_USEGLYPHCHARS = 4; { use glyph chars, not ctrl chars }
  MB_ERR_INVALID_CHARS = 8{ error for invalid chars }
 
  WC_DEFAULTCHECK = $100; { check for default char }
  WC_COMPOSITECHECK = $200; { convert composite to precomposed }
  WC_NO_BEST_FIT_CHARS = $400; { do not use best fit chars }
  WC_DISCARDNS = $10; { discard non-spacing chars }
  WC_SEPCHARS = $20; { generate separate chars }
  WC_DEFAULTCHAR = $40; { replace w default char }
  // Windows >= Vista
  WC_ERR_INVALID_CHARS = $80; { error for invalid chars }
{$ENDIF}
 
function AnsiToWide(const S: ZAnsiString;
  const CP: Word): {$IFDEF WITH_UNICODEFROMLOCALECHARS}UnicodeString{$ELSE}WideString{$ENDIF};
function WideToAnsi(const ws: {$IFDEF WITH_UNICODEFROMLOCALECHARS}UnicodeString{$ELSE}WideString{$ENDIF}; CP: Word):
  ZAnsiString;
function StringToAnsiEx(const s: String; const {$IFNDEF UNICODE}FromCP,{$ENDIF} ToCP: Word): ZAnsiString;
function AnsiToStringEx(const s: ZAnsiString; const FromCP{$IFNDEF UNICODE}, ToCP{$ENDIF}: Word): String;
{$ENDIF}


demmanch ist AnsiToWideAnsiToWide nur verfügbar wenn WITH_LCONVENCODING nicht definiert ist.
Für mich sieht das so aus, als würden sich UNICODE und WITH_LCONVENCODING gegenseitig ausschliessen.
Zuletzt geändert von Lori am Di 19. Mär 2013, 15:53, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen.

Antworten