In generale si dovrebbe mai usare WideString. È inteso solo per compatibilità con COM BSTR.
Tuttavia, si sta utilizzando una versione precedente al 2009, pertanto se si utilizza lo standard per l'Unicode non è possibile effettuare una scelta.
WideString viene assegnato dinamicamente, quando si usa il record new
Delphi aggiungerà il codice per inizializzare le stringhe.
Non è necessario inizializzarli autonomamente.
Proprio come le stringhe WideStrings non sono conteggiate conteggio di riferimento, ma verranno distrutte quando si registra il record dispose
.
Se si assegna il Widestring a un altro Widestring Delphi farà una copia, questo è leggermente meno efficiente del conteggio, ma per il resto non è un problema.
Ogniqualvolta un Widestring esce dal campo di applicazione viene distrutto.
Fare attenzione con PWideChar, questi saranno penzolanti quando una WideString viene distrutta.
VCL non può visualizzare WideString
Nota che, mentre Delphi 7 fa hanno il supporto per Unicode con WideString VCL non può visualizzare i tuoi Widestrings, è possibile visualizzare solo AnsiString.
Se si desidera visualizzare WideStrings utilizzare i componenti TNT, vedere questa risposta per ulteriori informazioni: Handling a Unicode String in Delphi Versions <= 2007
Se avete intenzione di assegnare a WideString (Ansi) stringa si potrebbe anche usare stringa di pianura, perché si perde tutto il tuo unicode
È possibile utilizzare UTF8, ma D7 non può visualizzare neanche UTF8.
Caveat: indicizzazione nei locali asiatiche
Un ulteriore avvertimento è che MyWidestring[i]
non significa necessariamente che il carattere esimo perché Unicode non può essere pienamente espresso in 2 byte per char.
A meno che non si stia utilizzando una lingua asiatica, ciò non dovrebbe influenzare l'utente.
Q: È sicuro sostituire String [70] con WideString;
Sì, ma è più facile da sostituire con String[70]
String
(aka AnsiString). Perché D7 VCL supporta AnsiString ma non WideString.
Oltre a questo non hai davvero un problema.
Ulteriore lettura
https://grahamwideman.wikispaces.com/Delphi+String+Types
Perché vuoi cambiarlo? –
'Dispose' chiama la routine' _Finalize' che libera correttamente tutte le strutture interne. Come hai intenzione di usare questo tipo? – MBo
La risposta semplice è si. Questo è un tipo gestito, e 'New' e' Dispose' inizializzano e finalizzano i tipi gestiti. –