Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    C++ Builder 5 con caratteri UNICODE

    Ciao a tutti!!!!

    Sto sviluppando un'applicativo in c++ builder 5,questo applicativo legge le caption degli
    oggetti in un file .txt (questo per la possibilita di cambiare lingua) prende il codice e poi lo associa con la parole es.:
    00001:Esci
    00002:Apri
    etc.....

    Il problema che non riesco a mettere i caratteri in formato unicode negli oggetti, ho provato a caricare tutte le lingue in impostazioni internazionali a convertire i caratteri unicode presi dal file e mettere in char normali...

    Qualcuno mi sa dire come risolvere questo problema, se devo cambiare gli oggetti in unicode ho (come letto in altri forum) la possibilita di cambiare i settaggi del Builder?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non so se esistono oggetti per il C++ Builder che accettino tipi di stringa diversa da una AnsiString. Io, per me, userei l'API WideCharToMultiByte per convertire una widestring in una stringa ansi e poi trasformare quest'ultima nel tipo adatto al Builder. E userei utf8 per farlo.

  3. #3
    Oh provato per vedere se gli oggetti di builder funzionino con l'unicode, prima di tutto ho cercato la funzione (WideCharToMultiByte) ma non la ho trovata ma ho trovato una funzione simile (WideCharToString)...

    Adesso ho provato a fare un bottone che copia il contenuto in unicode da una parte all'altra di una textbox ma non fuizione cioe quanco metto nella text1 mi lecce la porola un unicode ma quando la copia nell'oggetto text2 mi fa vedere questi ??????...

    wchar_t *str;
    AnsiString sDestinazione;
    WideString Source;
    Source = Text1->Text;
    str = Source.c_bstr();
    sDestinazione = WideCharToString( str );
    Text2->Text=sDestinazione ;

    Come fare????

  4. #4
    E se percaso provassi a installare il builder 2007?
    Risolverei il problema ho non cambierebbe nulla....

    E se SI il mio software avra qualche problema passando da una versione ad un'altra?

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La WideCharToMultiByte è una funzione delle api di Windows.
    http://msdn.microsoft.com/en-us/library/ms776420(VS.85).aspx

    Non ho molta dimestichezza con le classi del Builder, preferisco le librerie standard del C++ e convertire le stringhe all'ultimo.
    Col Turbo C++ Explorer (che usa la stessa VCL) ho provato questo:
    codice:
        WideString ws = WideString(Edit1->Text);
        Edit2->Text = WideCharToString(ws.data());
    e non mi ha dato nessun problema.
    Solo non so con che tipo di encode viene effettuata la conversione.

  6. #6
    Ho provato a fare questo codice:

    WideString ws = WideString(Rck1->Text);
    Edit1->Text = WideCharToString(ws.c_bstr());

    per ws.Data(); non cera sulla widestring del builder e ho messo ws.c_bstr() e converte la stringa in wchar_t:


    mi da lo stesso problema cioè su Edit1 mi fa vedere ugualmente i ????? e ho messo un testo in arabo e cinese, percaso devo modificare l'impostazione del computer????

  7. #7
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La WideCharToString effettua una conversione da utf16 a char, senza tener conto del codepage utilizzato per quello vedi i vari ????
    Questo perché il sistema non sa che carattere usare.

    Con l'api WideCharToMultiByte e code page 950

    ( http://msdn.microsoft.com/en-us/library/ms776446(VS.85).aspx )

    il testo qui sotto (cinese in unicode) :

    大家好。

    viene convertito in AnsiString come:

    ¤j®a¦n¡C

    Utilizzando utf8 invece:

    大家好。

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.