Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: carlo - Gennaio 21, 2020, 03:49:01 pm

Titolo: Vedere in una dbgrid caratteri tedeschi
Inserito da: carlo - Gennaio 21, 2020, 03:49:01 pm
Salve, ho una tabella dbf che contiene alcuni campi con caratteri dell'alfabeto tedesco, quelli con la dieresi (äüö...). Posiziono una dbgrid ed in Delphi vedo correttamente i caratteri, mentre con Lazarus 2.0.4/FPC 3.0.4 appaiono caratteri strani.
C'è una soluzione ?
Grazie
Titolo: Re:Vedere in una dbgrid caratteri tedeschi
Inserito da: bonmario - Gennaio 21, 2020, 06:32:04 pm
Ciao,
ho avuto lo stesso problema anni fa', su un progetto che adesso è in disuso.

Prima di popolare la dbgrid, fai questo per ogni colonna che è potrebbe essere affetta dal problema:
Codice: [Seleziona]
          DBGrid1.Columns[IdxCol].Field.OnGetText:=@ConvertiCampiStrInUtf8;
Naturalmente "IdxCol" è il n° della colonna

Poi, dichiari nella "private" o nella "public" del form questa procedura:
Codice: [Seleziona]
    procedure ConvertiCampiStrInUtf8(Sender: TField; var aText: string; DisplayText: Boolean);

Questo è lo sviluppo della procedura:
Codice: [Seleziona]
procedure TForm1.ConvertiCampiStrInUtf8(Sender: TField; var aText: string; DisplayText: Boolean);
var TestoCella:String;
begin
  TestoCella:=(Sender as TField).AsString;
  aText:=:=WinCPToUTF8(TestoCella);
end;

Spero che funzioni ancora !!!

Ciao, Mario
Titolo: Re:Vedere in una dbgrid caratteri tedeschi
Inserito da: Avogadro - Gennaio 21, 2020, 09:34:13 pm
Ho avuto problemi analoghi quando mi poggiavo su ODBC: accenatate, ed altri caratteri venivano convertiti in strani simboli.

Pare che il problema fosse la codifica UTF8* delle stringhe.

No cercato varie soluzioni ma non ne sono uscito fin quando non sono poi passato a sqlite .

Ora non so  a che livello bisogna intervenire ma il problema potrebbe essere questo: la configurazione del sw in base alla lingua che si intende usare nell' interfaccia.

*
https://it.wikipedia.org/wiki/UTF-8