2012-03-20 15 views
11

C'è un modo per farlo?Come disabilitare unicode in Delphi xe2

Attualmente sto usando 2007 e sto cercando di aggiornare, ma è molto frustrante cercando di ottenere questa nuova versione per fare qualsiasi cosa.

Il nuovo comportamento di char, stringhe e Pchar in xe2 uccide praticamente ogni applicazione e componente di terze parti che ho provato su di esso.

Esiste un'opzione del compilatore che fornisce la compatibilità con D2007. ?

+1

Delphi ha tipi AnsiChar, AnsiString e PAnsiChar per supportare le vecchie funzionalità. –

+1

E anche un'unità AnsiStrings. –

+0

Si potrebbe chiedere la domanda più comune che sia mai stata posta sulla transizione Unicode. La risposta è "non è così male, basta andare oltre e portare il tuo codice". Quasi ogni componente commerciale e open source è stato scaricato 2-3 anni fa. Vieni in acqua va bene. –

risposta

5

Se esistesse un "interruttore Ansi" per Delphi 2009/2010/XE/XE2 (le versioni Unicode), si sarebbe semplicemente scambiato il problema che si ha ora, con problemi ben peggiori.

Per questo motivo, non può esserci un interruttore. Questa idea è stata discussa con attenzione, mi è capitato di sapere da conversazioni di prima mano con le persone che hanno preso la decisione, e la decisione di rompere il codice non è stata intrapresa senza due diligence. Non c'era semplicemente nessun altro modo di andare. Per rendere Delphi veramente Unicode, era essenziale l'alias String = UnicodeString.

Pertanto, è necessario modificare tutti i vostri String dichiarazioni AnsiString, e Char-AnsiChar se si desidera avere tipi di carattere e stringhe a byte singolo non Unicode nel codice dell'applicazione. Nella maggior parte del tuo codice, e nella maggior parte dei luoghi, non è necessario. Ma dove hai bisogno esplicitamente dell'elaborazione in formato byte, come i protocolli binari su RS232 e RS485, o formati di file binari (EDA, ecc.), Devi cambiare il tuo codice.

Se non si desidera effettuare il porting del codice da soli, pagare qualcuno per farlo. Ho portato su di me un'enorme libreria di componenti e applicazioni scientifiche e mi ci sono volute diverse settimane per testare e trovare tutti i bug. In seguito, ho avuto una base di codice moderna e ragionevole che non si è più rotta dal 2009 quando ho aggiornato.

Quando si arriva al divario XE/XE2, è possibile che si verifichi un po 'più di fastidio con le ipotesi del codice che i tipi di puntatore hanno le stesse dimensioni di Integer o Cardinal, che non è più vero in Win64. Ancora una volta, i ragazzi Delphi non hanno alcun desiderio di infrangere il codice, stanno solo seguendo le buone pratiche ingegneristiche, in quel caso, Win64 detta certe cose.

Perché non hanno modificato tutte le proprietà di controllo VCL in USTRING anziché String? Perché non hanno fatto in modo che ogni funzione RTL prendesse sia USTRING che STRING e fornisse sovraccarichi?

Poiché lo sviluppo Delphi normativo è ora puramente Unicode. USTRING è, e sarebbe un caso speciale. String è il tipo stringa nativo (normativo) ed è, infatti, noto anche come UnicodeString.

Accade così che stavate già utilizzando un alias di tipo. Le stringhe in delphi 1.0 erano limitate a 255 caratteri di lunghezza. Quando hanno introdotto Delphi 2.0 e il tipo di stringa lungo, internamente chiamato AnsiString, hanno fatto il verso alias del tipo comune esistente String come String=AnsiString. Quando siamo arrivati ​​a Unicode, ogni componente VCL e ogni metodo VCL che prende una stringa accetta ancora una stringa. Tuttavia, String è ora String=UnicodeString.

Delphi 7 ha già WideString per esempio. Non abbiamo bisogno di un passaggio a metà per unicode. Che tu lo capisca o meno, l'intero mondo di sviluppo del software ora si aspetta che i tipi di stringhe siano unicode. Delphi è parte di un fenomeno globale. Internet è unicode. Il tuo sistema operativo Windows 7 è unicode nativo puro.

+1

Leggere il white paper embaracadero unicode mi ha convinto che la migrazione è troppo orribile per affrontare in questo momento. Immagino di essere bloccato con D2007 per il prossimo futuro. –

+1

In realtà non è così male. –

+0

Il tuo parallelo con Windows 7 è in realtà abbastanza ironico dal momento che abbiamo dovuto abbandonare 7 a causa dell'incompatibilità con molte delle nostre principali catene di strumenti. Ora usiamo solo XP e xp64, che è un po 'triste dal momento che dimostra che Microsoft ha avuto un percorso di migrazione indolore a 64 bit, hanno scelto di non promuoverlo. –

Problemi correlati