Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с кодировкой [D6, WinME]


286 ©   (2005-07-16 14:16:00) 

Я тут поисках в вашем FAQ, но немного не пойму
var
 list:tstringlist;
 i : integer;
 s : string;
begin
 list:=tstringlist.create;
 list.loadfromfile('d:\chasovoi\parametr.cfg');
 i :=List.IndexOf('// 6 ');
 s :=List[i + 1];
 ShowMessage (IntToStr (i) + '  ' + s);
 list.Free;
end;
Английские символы - на ура, понимает, а вот русские выводит иероглифы.
В FAQ описана функция CharToOEM. А есть какая либо для типа string?


Alexander Panov   (2005-07-16 19:00:00) [1]

AlexWlad ©   (16.07.05 18:56) [9]
Ну зачем же уж так жестоко...

function W2D(const Src: String): String;
begin
  Result := Src;
  if Result='' then Exit;
  CharToOem(PChar(Result),PChar(Result));
end;

function D2W(const Src: String): String;
begin
  Result := Src;
  if Result='' then Exit;
  OemToChar(PChar(Result),PChar(Result));
end;


AlexWlad   (2005-07-16 18:56:00) [2]

Как вариант...

function _OemToAnsi(s : string) : String;
function _AnsiToOem(s : string) : String;

function _OemToAnsi(s : string) : String;
Var
  pcs : PChar;     // source
  pcd : PChar;     // destination
begin
    pcs := StrAlloc(Length(s)+1);
    pcd := StrAlloc(Length(s)+1);
    StrPCopy(pcs,s);
    OEMToChar(pcs,pcd);
    _OemToAnsi := StrPas(pcd);
    StrDispose(pcs);
    StrDispose(pcd);
end;

function _AnsiToOem(s : string) : String;
Var
  pcs : PChar;     // source
  pcd : PChar;     // destination
begin
    pcs := StrAlloc(Length(s)+1);
    pcd := StrAlloc(Length(s)+1);
    StrPCopy(pcs,s);
    CharToOEM(pcs,pcd);
    _AnsiToOem := StrPas(pcd);
    StrDispose(pcs);
    StrDispose(pcd);
end;


286   (2005-07-16 16:02:00) [3]

Все господа, получилось, спасибо
Нужно было:

OemToChar(PChar(s),PChar(s));
Вот выручили то, а.
                            Пасибо


286   (2005-07-16 15:58:00) [4]

Так то вроде переводит уже, в watch list видно. Но получается из одной абрыкадабры в другую.


Alexander Panov   (2005-07-16 15:46:00) [5]

CharToOem(PChar(s),PChar(s));


286   (2005-07-16 15:22:00) [6]

Ребят, а можно кусочек кода как переводить?


286   (2005-07-16 15:19:00) [7]

ага, щас я пытаюсь сделать нечто полезное.
пробую пока что


Anatoly Podgoretsky   (2005-07-16 15:09:00) [8]

string полностью совместимы с PChar


begin...end   (2005-07-16 15:02:00) [9]

> 286 ©   (16.07.05 14:16)

> В FAQ описана функция CharToOEM. А есть какая либо для
> типа string?

CharToOEM подходит и для типа string.


[lamer]Barmaglot   (2005-07-16 14:31:00) [10]

CharToOemBuff ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо