скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

При использовании 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. Осталось только вызвать в нужный момент.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook