При использовании DOS DBF файлов - перекодировка между форматами

Материал из DRKB

При использовании DOS DBF файлов - перекодировка между форматами[править | править код]

При использовании DOS DBF файлов можно сделать небольшую программку (или процедурку), которая произведет перекодировку между форматами. что-то типа:


function update_dos(s: string): string;
var
  c: string;
  I: Integer;
  l: Byte;
  dd: Char;
begin
  i := 1;
  c := '';
  while i < Length(s)+1 do
  begin
    l := Ord(s[i]);
    Inc(i);
    if (l >= 128) and (l <= 192) then
      l := l + 64
    else if (l >= 224) and (l < 240) then
      l := l + 16
    else if l = 241 then
      l := 184
    else if l = 240 then
      l := 168;
    dd := Chr(l);
    c := c + dd;
  end;
  Result := c;
end;

function update_win(s: string): string;
var
  c: string;
  I: Integer;
  l: Byte;
  dd: Char;
begin
  i := 1;
  c := '';
  while i < Length(s)+1 do
  begin
    l := Ord(s[i]);
    Inc(i);
    if (l >= 192) and (l < 240) then
      l := l - 64
    else if (l >= 240) and (l < 256) then
      l := l - 16
    else if l = 184 then
      l := 241
    else if l = 168 then
      l := 240;
    dd := chr(l);
    c := c + dd;
  end;
  Result := c;
end;


это и туда и обратно, у меня работает на старых DBF. Осталось только вызвать в нужный момент.



Source: Взято с http://delphiworld.narod.ru
ID: 02704