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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 19:51   #1
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
Вопрос Русскоязычный txt файл

Помогите пожалуйста, как с помощью консольного приложения записать в текстовый файл строку, в которой содержатся русские буквы?

Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 10.02.2010, 20:36   #2
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Напиши функцию, которая переводит строку из ASCII кодировки в ANSI
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 10.02.2010, 20:56   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Код:
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; 
..........
  str :=  ConvertAnsiToOem(str);
 //  и на запись в файл
.........
Gorychev вне форума Ответить с цитированием
Старый 10.02.2010, 21:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Русские буквы бывают во множестве самых разных кодировок. Начиная с OEM (она же DOS, она же 866 кодовая страница), и заканчивая ANSI (Win-1251) или KOI8-R...

консольное приложение под какую OS???

вот, рискну предположить, что речь идёт о Win32 приложении написанном на Delphi, тогда используйте
Код:
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;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.02.2010, 18:53   #5
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
Хорошо

Serge_Bliznykov, огромное спасибо!!!
И ваше предположение насчёт того, что речь идёт о win32 абсолютно правильное.

А можно поинтересоваться, в целях повышения образованности, как работает функция OemToAnsiBuff и что значат входящие в неё параметры?
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Старый 12.02.2010, 08:20   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я что-то не понял, а разве штатный Write не умеет русские буквы писать в файл?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2010, 21:46   #7
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
По умолчанию

умеет, но только если их напрямую из программы задавать...

А если, например, строка вводится из консоли, то она в файл записывается кроказябками
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль не русскоязычный _PROGRAMM_ Паскаль, Turbo Pascal, PascalABC.NET 8 20.10.2009 07:49
как открыть файл.txt Sergeu Общие вопросы Delphi 1 25.09.2008 13:24
Как создать txt файл Titan123 Общие вопросы Delphi 7 29.06.2008 16:56
Как прочесть txt файл www.site.ru/info.txt BR17UY Работа с сетью в Delphi 1 16.04.2007 13:01