Показать сообщение отдельно
  #2  
Старый 03.10.2014, 09:45
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от OSIRIS
функции
Код:
function StrOemToAnsi(const S: AnsiString): AnsiString;
begin
  SetLength(Result, Length(S));
  OemToAnsiBuff(@S[1], @Result[1], Length(S));
end;

//---------------------------------------------------------------
function StrAnsiToOem(const S: AnsiString): AnsiString;
begin
  SetLength(Result, Length(S));
  AnsiToOemBuff(@S[1], @Result[1], Length(S));
end;

тоже не спасают
Вот так должно работать:
Код:
function CharToOemCase(Value: AnsiString): AnsiString;
begin
  Result := Value;
  if Result <> '' then CharToOemBuffA(Pointer(Result), Pointer(Result), Length(Result));
end;

function OemToCharCase(Value: AnsiString): AnsiString;
begin
  Result := Value;
  if Result <> '' then OemToCharBuffA(Pointer(Result), Pointer(Result), Length(Result))
end;
Пример:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows;

function CharToOemCase(Value: AnsiString): AnsiString;
begin
  Result := Value;
  if Result <> '' then CharToOemBuffA(Pointer(Result), Pointer(Result), Length(Result));
end;

function OemToCharCase(Value: AnsiString): AnsiString;
begin
  Result := Value;
  if Result <> '' then OemToCharBuffA(Pointer(Result), Pointer(Result), Length(Result))
end;

begin
  Writeln(CharToOemCase('Проверка'));
  Readln;
end.
Ответить с цитированием