Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2014, 22:04   #1
VitProff
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 12
По умолчанию Перекидка всех данных в DBF с кодировки Dos866 в Win1251

Помогите решить задачу.

Есть каталог в котором есть много DBF файлов с данными в кодировке Dos866 и есть второй каталог в котором есть DBF файлы в кодировке Win1251.
Проверить по очереди все имена файлов в втором каталоге и если они совпадают с именем файла в первом каталоге тогда нужно взять данные с файлов первого каталога перекодировать в кодировку Win1251 и добавить в конец файла в втором каталоге.
VitProff вне форума Ответить с цитированием
Старый 27.01.2014, 22:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Обязательно это в Делфи делать?
Может стоит взять более подходящий для этого FoxPro? Я обычно им такие вещи делаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2014, 22:29   #3
VitProff
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 12
По умолчанию

Можно и на FoxPro но нужно сделать простую форму чтоб эту перекодировку мог сделать любой бухгалтер не очень понимающий в роботе на ПК.
VitProff вне форума Ответить с цитированием
Старый 27.01.2014, 22:48   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно и ADO, подобрав соответствующие провайдеры для чтения и записи в зависимости от кодировки и наличия ссылки на кодовую страницу в заголовке dbf
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.01.2014, 09:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мог сделать любой бухгалтер
А-а-а. Вот оно как. Я думал это для себя пишется.
Т.е. есть какая-то суперстарючая на клиппере программа, которая что-то генерирует в DBF. И есть новая типа 1С, которая должна это нагенерированное считать, но пичаль в кракозябликах.
Я верно понял ситуацию?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2014, 14:28   #6
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

попробуй вот эти функции, мне они помогают:
Код:
function ConvertOemToAnsi(const S: string): string;
{ ConvertOemToAnsi translates a string from the OEM-defined
character set into either an ANSI or a wide-character string }
{$IFNDEF WIN32}
var
  Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
  {$IFDEF WIN32}
  SetLength(Result, Length(S));
  if Length(Result) > 0 then
    OemToAnsi(PChar(S), PChar(Result));
  {$ELSE}
  if Length(Result) > 0 then
  begin
    OemToAnsi(StrPCopy(Source, S), Dest);
    Result := StrPas(Dest);
  end;
  {$ENDIF}
end; { ConvertOemToAnsi }

function ConvertAnsiToOem(const S: string): string;
{ ConvertAnsiToOem translates a string into the OEM-defined character set }
{$IFNDEF WIN32}
var
  Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
  {$IFDEF WIN32}
  SetLength(Result, Length(S));
  if Length(Result) > 0 then
    AnsiToOem(PChar(S), PChar(Result));
  {$ELSE}
  if Length(Result) > 0 then
  begin
    AnsiToOem(StrPCopy(Source, S), Dest);
    Result := StrPas(Dest);
  end;
  {$ENDIF}
end; { ConvertAnsiToOem }
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 28.01.2014, 14:42   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://programmersforum.ru/showthrea...hlight=MSDASQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.01.2014, 15:55   #8
VitProff
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А-а-а. Вот оно как. Я думал это для себя пишется.
Т.е. есть какая-то суперстарючая на клиппере программа, которая что-то генерирует в DBF. И есть новая типа 1С, которая должна это нагенерированное считать, но пичаль в кракозябликах.
Я верно понял ситуацию?
Похоже но немного не так. Есть программа которая работает с базой в кодировке DOS . После выхода очередного обновления разработчики поменяли кодировку с DOS на WIN но не подумали что в DOS кодировке пользователи уже внесли много данных. Разработчики говорят чтоб заносили все вручную ещё раз в пустую базу. Но это не выход. По этому бухгалтеры меня мучат, я работаю ИТ-шником, чтоб как-то перекинуть данные. Но это могу я перекинуть 2-3 пользователям но что делать если их 50 и размещены они далеко от меня. Я не могу до каждого приехать и перекидивать. Нужно сделать програмку которая все будет делать сама. Чтоб каждый бухгалтер мог без проблем у себя проделать такую перекидку.
VitProff вне форума Ответить с цитированием
Старый 28.01.2014, 16:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пусть тебе по e-mail пересылают свои DBF ты один раз переконвертируешь данные и отошлешь назад. Ехать в наш век интернета никуда не надо.
И программу для такого разового действа тоже лишне писать. С этим даже DBFNavigator справится без проблем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2014, 20:12   #10
VitProff
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 12
По умолчанию

У них почти ни у кого нет интернета.
VitProff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База данных LS Книга доходов и раскодов Character set win1251 is not defined bocha1980 Операционные системы общие вопросы 0 15.03.2012 07:20
Проблема с отображением кодировки в Базе Данных Lindemann66 C/C++ Базы данных 2 02.08.2011 15:54
Копирование данных DBF таблиц ИВэТэшка БД в Delphi 1 20.03.2009 21:06
Проблема кодировки DBF из foxpro djinni БД в Delphi 6 29.01.2008 14:36