Avatar billede martin_andersen Nybegynder
11. august 2004 - 14:03 Der er 4 kommentarer og
1 løsning

TADOQuery og unicode

Jeg forsøger i øjeblikket at hente data ud af en oracle database som kører unicode. Jeg benytter følgene kode til at hente en tekst ud:

...
ADOQuery1.FieldByName('name').AsString;
...

Problem:
Specielle tegn bliver ikke konverteret korrekt, således at f.eks nogle norske navne ikke vises korrekt i applikationen.

Hvordan kan man sikre sig at tekstene bliver konverteret korrekt? Jeg har forsøgt at benytte "asVariant", men uden held.
Avatar billede hrc Mester
11. august 2004 - 15:23 #1
Måske kan denne bruges? ConvertToAnsi(fCodepage,aStrings)
Avatar billede hrc Mester
11. august 2004 - 15:26 #2
Undskyld - det var min egen rutine. Her kommer koden:

procedure TStandat.ConvertToAnsi(aCodepage : string; aStrings: TStrings);
var
  p, lgd : integer;
  p_in : pAnsiChar;
  p_out : pWideChar;
  st_out : WideString;
begin
  p := pos(CodePagePrefix,aCodepage);
  if p > 0 then
    System.Delete(aCodepage,1,length(CodePagePrefix)+1);

  p_in := pAnsiChar(aStrings.Text);
  Lgd := MultiByteToWideChar(StrToInt(aCodePage),MB_PRECOMPOSED,p_in,-1,nil,0);
  SetLength(st_out,lgd - 1);
  p_out := pWideChar(st_out);
  MultiByteToWideChar(StrToInt(aCodePage),MB_PRECOMPOSED,p_in,-1,p_out,lgd - 1);
  aStrings.Text := string(p_out);
end;

Det var MultiByteToWideChar der måske havde interesse.
Avatar billede martin_andersen Nybegynder
11. august 2004 - 15:37 #3
Det ser ud til at være et skridt i den rigtige retning...

Hvad skal jeg angive i "aCodepage" param?
Er teksten ikke allerede konverteret hvis man benytter "asString"?
Avatar billede hrc Mester
11. august 2004 - 21:45 #4
I aCodepage skrives 850, 865 eller lignende. Bemærk detaljen med at kalde funktionen med en output-størrelse på nil returnerer længden på det der skal allokeres bagefter.

Der er en lang og interessant (!) beskrivelse på MSDN.

Efter lidt graven i VCL'et ser det ikke ud til at der foretages nogen konvertering der. Data kopieres råt og ukonverteret.
Avatar billede martin_andersen Nybegynder
13. august 2004 - 12:02 #5
Tak for hjælpen... Jeg er kommet på rette spor:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester