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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 09:25   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
Восклицание Загрузить файл utf8!

Доброе утро!

Так я могу сохранить текстовый файл (список из нескольких строк например) как utf8 (используются визуальные компоненты поддерживаемые юникод ElPack, но это не принципиально):

Код:
procedure TMainForm.Button1Click(Sender: TObject);
 var
   Temp : Utf8String;
  Stream : TMemoryStream;
begin
   Temp := Utf8Encode(ElComboBox1.Items.Text); // <-- строка, записываемая в файл
   Stream := TMemoryStream.Create;
  try
      Stream.Write(Pointer(Temp)^, Length(Temp));
      Stream.SaveToFile('utf8.txt');
  finally
      Stream.Free;
  end;
end;
Эта процедура работает отлично!

Вопрос:

Как корректно прочитать этот файл, то есть загрузить его?
Так код не работает, из потока читается абракадабра:

Код:
procedure TMainForm.Button2Click(Sender: TObject);
      var i : Integer;
          Stream : TMemoryStream;
          Buffer : array[0..MAX_PATH-1] of WideChar;
begin
  Stream := TMemoryStream.Create;
  try
      if FileExists('utf8.txt') then
      begin
        Stream.LoadFromFile('utf8.txt');
        SetLength(Buffer, Stream.Size);
        FillChar(Buffer, SizeOf(Buffer), 0); 
        Stream.Read(Buffer[1], Stream.Size);
        ElComboBox1.Items.Add(??????????);
        .. код не работает!
      end;
  finally
      Stream.Free;
  end;
end;
Как изменить процедуру во второй кнопке, чтобы корректно загружать данные из потока в визуальный компонент поддериваемый юникод.

Спасибо

Последний раз редактировалось SkAndrew; 22.04.2010 в 09:34.
SkAndrew вне форума Ответить с цитированием
Старый 22.04.2010, 11:39   #2
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Может быть все же кто-нибудь может подсказать путь решения проблемы? Спасибо всем.
SkAndrew вне форума Ответить с цитированием
Старый 22.04.2010, 16:53   #3
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Мастера-программисты, помогите с вопросом. может хоть подсказка в какую область? Спасибо всем.
SkAndrew вне форума Ответить с цитированием
Старый 22.04.2010, 17:12   #4
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Код:
procedure TMainForm.Button2Click(Sender: TObject);
          Stream : TMemoryStream;
          Buffer : Utf8String;
begin
  Stream := TMemoryStream.Create;
  try
      if FileExists('utf8.txt') then
      begin
        Stream.LoadFromFile('utf8.txt');
        SetLength(Buffer, Stream.Size);
        Stream.Read(Buffer[0], Stream.Size);
        ElComboBox1.Items.Text := Utf8Decode(buffer);
      end;
  finally
      Stream.Free;
  end;
end;
Попробуй так...

Последний раз редактировалось Hottabych; 22.04.2010 в 17:14.
Hottabych вне форума Ответить с цитированием
Старый 22.04.2010, 17:43   #5
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Спасибо, проблема решена.
SkAndrew вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить файл? Suren Общие вопросы C/C++ 1 06.03.2010 21:47
как загрузить mp3 файл? goodwen Мультимедиа в Delphi 6 01.02.2010 12:47
Как загрузить файл из интернета tarakan1983 Работа с сетью в Delphi 14 24.03.2009 06:47
Не могу загрузить файл в webbrowser Анастасия123456789 Общие вопросы Delphi 6 16.03.2009 12:57
Загрузить png файл MAcK Мультимедиа в Delphi 1 22.12.2008 22:23