Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DosToWin


Автор: Delphist 11.11.2005, 13:20
Нужна процедура перевода текста из Dos в WIn1251.
Т.е. есть файл в котором часть текста в кодировке, а часть текста в кодировке Win1251. Нужно сделать так, чтобы весь текст перевелся в кодировку Win1251.

Автор: _hunter 11.11.2005, 13:39
http://forum.vingrad.ru/index.php?showtopic=59621

Автор: Delphist 11.11.2005, 15:19
Цитата(_hunter @ 11.11.2005, 13:39)
http://forum.vingrad.ru/index.php?showtopic=59621

Не совсем то, что нужно.

Автор: _hunter 11.11.2005, 15:53
тогда вот:
http://forum.vingrad.ru/index.php?showtopic=52171
http://forum.vingrad.ru/index.php?showtopic=26951

Автор: koyot 18.11.2005, 12:20
Господа, вопрос на ту же тему.
При перекодировке из Dos в Win использую следующую функцию:

Код

function OEM2Ansi(const S : string) : string;
begin
SetLength(Result,Length(S));
if Length(S) <> 0 then
OemToChar(pChar(S),pChar(Result));
end;


При работе под XP все работает замечательно. Как только переношу прогу в Милениум, перекодировка перестает работать. Точнее в прогу попадает совершенно другая строка.
Не могли бы Вы подсказать как решить проблему.

Автор: Alexeis 18.11.2005, 12:43
Попробуйте так
Код

function WinToDos(St: string): string;
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  AnsiToOem(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;

function DosToWin(St: string): string;
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  OemToAnsi(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;

Автор: koyot 18.11.2005, 13:41
Спасибо.
К сожалению все то же самое.
У меня такое впечатление, что проблема не с Delphi, а с программой через которую я получаю строку. А ее писал не я, и исходников нет.
Вопрос снимается.

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