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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2014, 18:19   #1
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию Кодировка TStringStream

Ребят, здравствуйте.
Смотрите какая у меня беда получилась.
Есть FDocument - это TStringStream, так вот, в него заносится текст.
Задача моя сделать так, что бы при

Код:
Memo3.Lines.LoadFromStream(FDocument, TEncoding.UTF8);
не нужно было указывать TEncoding.UTF8. Иными словами нужно как то сменить кодировку уже готового документа.

Пробовал FDocument.Encoding.UTF8, не получилось.
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 09.01.2014, 20:29   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
Код:
  StringList.DefaultEncoding:=TEncoding.UTF8;
Ой, перепутал. Для StringStream наверно так
Код:
Stream:=TStringStream.Create('',TEncoding.UTF8);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.01.2014 в 20:47.
Аватар вне форума Ответить с цитированием
Старый 09.01.2014, 20:50   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Код:
StringList.DefaultEncoding:=TEncoding.UTF8;
StringList не подойдет, нужно использовать именно TStringStream или TMemoryStream
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 09.01.2014, 22:10   #4
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ой, перепутал. Для StringStream наверно так
Код:
Stream:=TStringStream.Create('',TEncoding.UTF8);
Пробовал и так тоже, не получилось, кодировка все равно не меняется.
Должны же быть какие то способы.
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 09.01.2014, 22:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так уж и не получается. В примере во входном файле данные в ANSI, в выходном - UTF8. delphi XE2
Код:
procedure TForm1.Button1Click(Sender: TObject);
var StreamIn,StreamOut: TStringStream;
begin
  StreamIn:=TStringStream.Create;
  StreamIn.LoadFromFile('e:\MyText.txt');
  StreamOut:=TStringStream.Create('',TEncoding.UTF8);
  StreamOut.WriteString(StreamIn.ReadString(StreamIn.Size));
  StreamOut.SaveToFile('e:\MyText1.txt');
  StreamOut.Free;
  StreamIn.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.01.2014, 22:40   #6
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Перепроверил еще раз, и заметил следующее.
Если в Memo грузить вот так

Код:
Memo3.Text := FDocument.DataString;
То все отлично работает, а если сделать вот так
Код:
Memo3.Lines.LoadFromStream(FDocument);
То кодировка не применяется. Возможно ли сделать так что бы в обеих случаях без добавления TEncoding в код Memo работала кодировка?
Если кто не понял я не хочу TEncoding добавлять так.

Код:
Memo3.Lines.LoadFromStream(FDocument, TEncoding.UTF8);
Моя задача что бы из списка выбиралась нужная кодировка, и мой класс будет переводить текст в нужную кодировку.
ShowMessage('Добро пожаловать!');

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

Цитата:
Моя задача что бы из списка выбиралась нужная кодировка
А чего сразу не сказать? Вот, разбирайтесь http://docwiki.embarcadero.com/CodeE...oding_(Delphi))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос строки в TStringStream Kolay Помощь студентам 2 05.11.2011 21:06
TStringStream в String Lokos Общие вопросы Delphi 8 25.08.2010 04:34
получение от TServerSocket TStringStream-a (delphi) dyonysos Помощь студентам 1 30.08.2009 17:08
Работа с классом TStringStream в Borland C++ profi Общие вопросы C/C++ 2 26.07.2009 20:14
TStringstream VS Tstringlist Lich Работа с сетью в Delphi 2 06.01.2009 10:54