Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Maggio 08, 2020, 12:57:56 pm

Titolo: [RISOLTO]Visualizzare emoticon
Inserito da: bonmario - Maggio 08, 2020, 12:57:56 pm
Ciao a tutti,
ho un progetto, con cui scarico i dati dei miei "allenamenti" da SportsTracker, e li emetto.

Se nell'app dello smartphone metto un commento usando le emoticon, questo viene salvato con qualcosa di simile a questo:

Codice: [Seleziona]
Grandissima prestazione \uD83D\uDE04\uD83E\uDD23\uD83D\uDE02\uD83D\uDE00\uD83D\uDE01

Da quel che ho capito, ognuna delle sequenze di 6 caratteri che inizia con "\u", è una emoticon.

Quando nel mio progetto tento di emettere quella stringa, al posto di ogni emoticon, mi ritrovo un punto di domanda.

Sapete se c'è già qualcosa che mi permetta di emettere le emoticon al posto dei punti di domanda?

Grazie in anticipo, Mario
Titolo: Re:Visualizzare emoticon
Inserito da: Mimmo - Maggio 08, 2020, 03:47:57 pm
Ciao,
devi trovare il sistema di convertire da UTF-16 a utf-8 e poi sperare che venga renderizzato nel controllo.
Forse con qualcosa del genere (è un abbozzo, preso da qui https://forum.lazarus.freepascal.org/index.php/topic,38893.0.html (https://forum.lazarus.freepascal.org/index.php/topic,38893.0.html), tanto per capire)...

Codice: [Seleziona]
var
  s, c1, c2 : String;
  list : TStringList;
  i, couples : integer;
begin
  list := TStringList.Create;
  try
    list.Delimiter:= '\';
    list.DelimitedText:= '\uD83D\uDE04\uD83E\uDD23\uD83D\uDE02\uD83D\uDE00\uD83D\uDE01';
    s := '';
    couples := list.Count div 2;
    for i:= 0 to couples - 1 do
    begin
      c1 := '$' + Copy(list.Strings[(i * 2) + 1], 2, 99);
      c2 := '$' + Copy(list.Strings[(i * 2) + 2], 2, 99);
      S+=WideChar(StrToInt(c1))+WideChar(StrToInt(c2));
    end;
    ShowMessage(S);
  finally
    list.Free;
  end;
Titolo: [RISOLTO]Re:Visualizzare emoticon
Inserito da: bonmario - Maggio 08, 2020, 05:40:30 pm
Grazie !!!

Il tuo codice funziona benissimo ... ma nel mio programma c'è qualcosa che non va.
Provando il tuo codice, mi sono accorto che la stringa che mi arriva, non è quella letta nel file, ma è "rovinata".
Adesso devo indagare, per capire dove avviene questa cosa.

Grazie, Mario
Titolo: Re:[RISOLTO]Visualizzare emoticon
Inserito da: xinyiman - Maggio 08, 2020, 07:06:04 pm
In ogni caso, dai un occhiata al progettino che ti allego. Secondo me può tornarti utile.
Titolo: Re:[RISOLTO]Visualizzare emoticon
Inserito da: bonmario - Maggio 09, 2020, 10:40:14 am
Ok, grazie !
Titolo: Re:Visualizzare emoticon
Inserito da: bonmario - Maggio 10, 2020, 12:36:21 pm
Ciao,
devi trovare il sistema di convertire da UTF-16 a utf-8 e poi sperare che venga renderizzato nel controllo.
Forse con qualcosa del genere (è un abbozzo, preso da qui https://forum.lazarus.freepascal.org/index.php/topic,38893.0.html (https://forum.lazarus.freepascal.org/index.php/topic,38893.0.html), tanto per capire)...

Grazie al tuo link, ho capito che il problema che avevo era un bug, risolto con FPC 3.2.0.

Grazie, Mario