Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Базы данных , DBASE и DBF

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

Чайник y хакеpа спpашивает, что такое UNIX, Windows'95, OS/2 и DOS?
- Hy пpедставь себе аэpопоpт. Hа взлетной полосе стоит навоpоченный кpасивый самолет. Пассажиpы в него заходят - там ковpы везде, все класно. Запyскают двигатели - и самолет медленно объезжает вокpyг аэpопоpта, после чего пассажиpы выходят. Вот это полyось. Hа дpyгой полосе стоит еще один самолет - тоже весь из себя, внyтpи ковpы. Садяться в него пассажиpы, самолет pазгоняется, взлетает, и тyт же pазваливается на кyски - это Windows. А в стоpоне на поле стоит стаpый, помятый, гpязный кyкypyзник - пассажиpы подходят, кладyт вещи, потом толкают самолет, pазгоняют его и сами запpыгивают - потом с тpyдом летят - это DOS.
- А что такое UNIX?
- Ну я же тебе говорил: - Представь себе аэропорт...

При использовании 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;
update_dos:=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;
update_win:=c;
end;

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

Программный трюк для преобразования между форматами DOS и Windows для файлов DBF!

Код, который я предоставил, это реализация двух функций на языке Delphi (Pascal): update_dos и update_win. Эти функции принимают строку в качестве входного параметра, выполняют некоторые преобразования над ней и возвращают преобразованную строку.

Вот что каждая функция делает:

  1. update_dos: эта функция конвертирует строку из формата Windows в формат DOS. Она проверяет каждый символ в входной строке и выполняет следующие преобразования:
    • Если символ находится в диапазоне 128-192 (включительно), она добавляет 64, чтобы получить соответствующий код DOS.
    • Если символ находится в диапазоне 224-239 (включительно), она добавляет 16, чтобы получить соответствующий код DOS.
    • Если символ равен 241 или 240, она заменяет их на 184 и 168 соответственно.
  2. update_win: эта функция конвертирует строку из формата DOS в формат Windows. Она проверяет каждый символ в входной строке и выполняет следующие преобразования:
    • Если символ находится в диапазоне 192-239 (включительно), она вычитает 64, чтобы получить соответствующий код Windows.
    • Если символ находится в диапазоне 240-255 (включительно), она вычитает 16, чтобы получить соответствующий код Windows.
    • Если символ равен 184 или 168, она заменяет их на 241 и 240 соответственно.

Эти функции можно использовать для преобразования файлов DBF между форматами DOS и Windows. Вам нужно вызвать одну из этих функций в зависимости от направления преобразования (например, из DOS в Windows или наоборот).

Сторонний комментарий: интересно наблюдать, как различные операционные системы обрабатывают кодировку символов. Код, который я предоставил, это хитрый способ для преобразования между двумя конкретными форматами. Однако помните, что это преобразование может не работать корректно для всех символов или строк.

В целом, ваш трюк выглядит как хорошая отправная точка для решения поставленной задачи. Просто убедитесь, что тщательно протестировали его и рассмотрели любые потенциальные краевые случаи!

Перекодировка между форматами DOS DBF файлов может быть выполнена с помощью программы или процедуры, которая переводит символы из одного кода в другой.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DBASE и DBF ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:45:07/0.003587007522583/0