Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#7

Re: Umlaute werden aus DBase-DB falsch ausgelesen

  Alt 25. Feb 2004, 16:22
Hallo

ich kenne das Problem vom Übertragen der Datenbanken von dBase nach Paradox.

Beim Kopieren Zeichenketten testen und wandeln mit:
Code:
{ASCII zu ANSI}
function KorrUml1(sa:string):string;
var
  s : string;
  j : integer;
  b : byte;
begin
  s:='';
  for j:=1 to length(sa) do begin
    b := ord(sa[j]);
    case b of
     {ASCII          ANSI    }
      $82: s:=s + chr($E9); //é;
    //$??: s:=s + chr($E8); //è
      $84: s:=s + chr($E4); {ä}
      $94: s:=s + chr($F6); {ö}
      $81: s:=s + chr($FC); {ü}
      $E1: s:=s + chr($DF); {ß}
      $8E: s:=s + chr($C4); {Ä}
      $99: s:=s + chr($D6); {Ö}
      $9A: s:=s + chr($DC); {Ü   220 = Alt-154}
      $F8: s:=s + chr($B0); {°   186 = Alt-248}
      $9B: s:=s + chr($F8); {ø   248 = Alt-155}
      $AB: s:=s + chr($BD); {½   189 = Alt-171}
      $AC: s:=s + chr($BC); {¼   188 = Alt-172}
      $5F: s:=s + chr($80); {€   128 = Alt-95 hat nicht fkt.}
    else
      s := s + sa[j];
    end;
  end;
  Result := s;
end;
Anwendung:
Code:
  ....
  Tab1.First;
  while not Tab1.Eof do begin
    for i := 0 to Tab1.FieldCount - 1 do begin
      if Tab1.FieldDefs.Items[i].DataType = ftString then begin
        fld := Tab1.FieldDefs.Items[i].Name;
        s := Tab1.FieldByName(fld).AsString;
        s := KorrUml1(s);
        Tab1.Edit;
        Tab1.FieldByName(fld).AsString := s;
      end;
    end;
    Tab1.Next;
  end;
  Tab1.First;
  ....
hat das Problem gelöst.

mfg
eddy
  Mit Zitat antworten Zitat