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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 20:42   #1
ramzes777
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 92
По умолчанию rar.exe - архивирование русских файлов

У меня не архивируются файлы в имени которых русские символы через консольный архиватор rar.exe, как быть?

Прочитал


Цитата:
Внимание, если в списке архивации будут русские буквы (например, папка "Избранное") - то этот список нельзя создавать в "Блокноте", ибо русские буквы должны быть к кодировке OEM (DOS,CP866) а "Блокнот" их пишет только в ANSI (WIN,CP1251), могу посоветовать использовать любую из многочисленных альтернатив блокнота - например редактор Bred 3.

У меня список - сохрание memo в файл. Как сохранить мемо используя кодировку ОЕМ?

Последний раз редактировалось ramzes777; 16.11.2011 в 21:56.
ramzes777 вне форума Ответить с цитированием
Старый 16.11.2011, 22:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var xStream: TMemoryStream;
    xBuffer1,xBuffer2: PAnsiChar;
    xSize: Integer;

...

  xStream:=TMemoryStream.Create;
  Memo1.Lines.SaveToStream(xStream);
  xSize:=xStream.Size;
  GetMem(xBuffer1,xSize);
  GetMem(xBuffer2,xSize);
  xStream.Position:=0;
  xStream.Read(xBuffer1^,xSize);
  AnsiToOemBuff(xBuffer1,xBuffer2,xSize);
  xStream.Clear;
  xStream.Write(xBuffer2^,xSize);
  xStream.SaveToFile('e:\Otladka.txt');
  xStream.Free;
  FreeMem(xBuffer1);
  FreeMem(xBuffer2);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.11.2011, 23:26   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

procedure TForm1.SaveMemoToOem;
var i : integer;
     s : AnsiString;
     f : TextFile;
begin
    AssignFile(f, 'ИмяФайла.txt');
    Rewrite(f);
    for i:=0 to Memo1.Lines.Count-1 do
      WriteLn(f, StrAnsiToOem(Memo1.Lines[i]);
    CloseFile(f);
end;
надеюсь, идея понятна?


ДОБАВЛЕНО
сорри, я код Аватар'а не видел, когда свой пример писал...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2011, 23:32   #4
ramzes777
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 92
По умолчанию

Да, идея понятна. Спасибо!
ramzes777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[QT] Архивирование файлов zip Яр|/||< (^_^) Qt и кроссплатформенное программирование С/С++ 0 15.08.2011 15:25
Повершелл архивирование файлов Ramzeskz Помощь студентам 0 07.07.2010 13:44
Архивирование файлов Altera Общие вопросы Delphi 1 08.06.2010 20:35
архивирование файлов через shell eda Microsoft Office Excel 8 14.07.2009 09:46
архивирование файлов .txt Brook Компоненты Delphi 7 03.06.2009 11:35