Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TDbf


Автор: Marriage 11.7.2005, 12:35
Вставляю данные с помощью TDbf.

Код

DBf1.SetFields(['МАМА','534','534',now,'534','М','534','Ы','123','123','123',now,'123','123','123',now,now,'123',0]);


В DBF-ник вставляется абра-кадабра вместо русских букв, кто - нибудь сталкивался с такой проблемой ???

Автор: SergeBS 11.7.2005, 13:25
Кодировка - DOS?
Если да - то так и будет.
Delphi работает в win-кодировке.
Т.е. переведи "мама" в нужную кодировку. Или выбери нужную.

smile
Руководство по TDbf

Micha Nelissen
9 мая 2003


2.4. Translate
{$ifdef DELPHI_4}
function Translate(Src, Dest: PChar; ToOem: Boolean): Integer;
override; {virtual}
{$else}
procedure Translate(Src, Dest: PChar; ToOem: Boolean); override; {virtual}
{$endif}
Данные записываются в DBF файл в конкретной кодовой странице, "OEM". Win-dows использует кодовые страницы "ANSI" для показа данных. Эта функция перетранслирует между этими кодовыми страницами.
Указание true в ToOem транслирует из Windows в DBF. Указание false в ToOem транслирует из DBF в Windows.

3.4. LanguageID
property LanguageID: Integer read GetLanguageID;
Используйте свойство LanguageID для определения кодовой страницы, комбинации об использованной локализации using. См. также DbfLang.pas для получения полной информации.

и т.п.


Автор: Marriage 12.7.2005, 08:42
Исходники Translate Прикольные

Код

 function TDataSet.Translate(Src, Dest: PChar; ToOem: Boolean): Integer;
begin
  if (Src <> nil) then
  begin
    if (Src <> Dest) then
    StrCopy(Dest, Src);
    Result := StrLen(Dest);
  end else
    Result := 0;
end; 

Автор: SergeBS 12.7.2005, 10:20
Функций перекодировки win-oem-koi8r как грязи.
Вкати какую понравится куда хочешь - хоть в программу, хоть в tdbf.
Лично я пользуюсь Halcyon. Там есть ASCIITranslate=true/false.

Автор: Marriage 12.7.2005, 12:22
Цитата(SergeBS @ 12.7.2005, 10:20)
Функций перекодировки win-oem-koi8r как грязи.

Не подскажешь где именно эту грязь достать можно ....smile

Автор: offline 12.7.2005, 13:24
http://www.delphiworld.narod.ru/_syntax_.html
раздел Кодировки - [8]

Автор: Marriage 12.7.2005, 16:22
Ничего не помогло ...

Автор: SergeBS 12.7.2005, 16:46
Marriage
Млин, делов на 15 минут перепробовать варианты.
Сляпал строку - шарахнул в запись. Вьювером посмотрел какая кодировка
получилась. Перекодировал строку перед записью в эту кодировку.
Записал и посмотрел на результат. Все.
А я просто принципиально не хочу громоздить эту TDbf.
Halcyon мне ближе - команды почти как в Фоксе и никаких проблем с кодировкой.

Не пойму, за что ты "опытный".

Автор: Marriage 12.7.2005, 17:16
Цитата(SergeBS @ 12.7.2005, 16:46)
Не пойму, за что ты "опытный".

Сам не знаю, с детства наверно.



Цитата(SergeBS @ 12.7.2005, 16:46)
Млин, делов на 15 минут перепробовать варианты.

Ну не силен я в кодировке[s] ???

Автор: TP@MB@Y 13.7.2005, 19:42
соррии не туда запостил =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)