Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как записать/прочитать картинку из текстового файла?  (Прочитано 10217 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RSaga
Гость
« : 25-03-2005 20:13 » 

Требуется в файле настроек, который будет использоваться программой, помимо других данных поместить картинку(например секция [PictData 1]), а из программы эту картинку поместить на форме, причём желательно чтобы картинка не записывалась во временный файл на диске, т.к. предполагается что текстовые данные будут зашифрованы.....
Т.е. допустим есть на форме место под картинку.
Выбираем файл в котором она находится в "текстовом виде" и она появляется на форме.
Как это осуществить?? Буду очень признателен если поможете!!!
Записан
RSaga
Гость
« Ответ #1 : 25-03-2005 20:17 » 

П.С. Я имел ввиду форма - это окно программы =)) ну т.е. просто обычная картинка чтоб в окошке появилась...
Записан
Alf
Гость
« Ответ #2 : 26-03-2005 00:12 » 

Есть способы, позволяющие закодировать любую двоичную информацию (в том числе, разумеется, и файл с графикой) в виде последовательности символов ASCII, которую можно потом вставить в любой текст. Именно таким образом осуществляется вложение файлов в электронную почту, которую изначально предполагалось использовать лишь для обмена текстовыми сообщениями и посему передача двоичной информации в другом формате, кроме текстового, невозможна.

Рекомендую рассмотреть следующие методы кодирования:

1. UUENCODE/UUDECODE - довольно древняя кодировка для передачи двоичной информации по линиям, поддерживающим 7-битный символьный набор.

2. MIME - более свежий вариант, специально разработанный для кодирования двоичных вложений в электронную почту в текстовом виде или передачи двоичных данных посредством HTTP.

Первый вариант IMHO попроще, а второй гибче, т.к. помимо собственно данных предоставляет информацию об их формате, облегчающую их интерпретацию.
Записан
RSaga
Гость
« Ответ #3 : 26-03-2005 01:28 » 

Спасибо!, но вообще именно реализацию хотелось бы увидеть на примере...
Mime кодирование вроде в стандартном компаненте nmuuprocessor есть из закладки FastNet. Но там Input Stream и Output Stream...это  как-то непонятно.....
вот допустим есть у меня файл(картинка). как из него сделать текст mime(и записать в Tmemo например).
А теперь из memo прямо на форму отобразить картинку. (там кажется есть clipboard stream что то такое)... хотелось бы пример простенький...
Записан
Cyborg
Гость
« Ответ #4 : 01-04-2005 11:44 » 

Простенький пример (из Help'a).
Кодируем картинку в текст. Текст в картинку. Работа с файлами.
Как переделать для работы с Memo думаю понятно.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, NMUUE, ExtCtrls;

type
  TForm1 = class(TForm)
    NMUUProcessor1: TNMUUProcessor;
    BOpen: TButton;
    EIn: TEdit;
    EOut: TEdit;
    BCode: TButton;
    BDecode: TButton;
    OpenDialog1: TOpenDialog;
    RBMime: TRadioButton;
    RBCode: TRadioButton;
    procedure BOpenClick(Sender: TObject);
    procedure BCodeClick(Sender: TObject);
    procedure BDecodeClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BOpenClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    EIn.Text := OpenDialog1.FileName;
end;

procedure TForm1.BCodeClick(Sender: TObject);
var
  FS1,
  FS2: TFileStream;
begin
  // Encode
  FS1 := TFileStream.Create(EIn.Text, fmOpenRead);
  FS2 := TFileStream.Create(EOut.Text, fmCreate);
  try
    if RBCode.Checked then
      NMUUProcessor1.Method := uuCode
    else
      NMUUProcessor1.Method := uuMime;
    NMUUProcessor1.InputStream := FS1;
    NMUUProcessor1.OutputStream := FS2;
    NMUUProcessor1.Encode;
  finally
    FS1.Free;
    FS2.Free;
  end;
end;

procedure TForm1.BDecodeClick(Sender: TObject);
var
  FS1,
  FS2: TFileStream;
begin
  // Decode
  FS1 := TFileStream.Create(EOut.Text, fmOpenRead);
  FS2 := TFileStream.Create(EIn.Text, fmCreate);
  try
    if RBMime.Checked then
      NMUUProcessor1.Method := uuMime
    else
      NMUUProcessor1.Method := uuCode;
    NMUUProcessor1.InputStream := FS1;
    NMUUProcessor1.OutputStream := FS2;
    NMUUProcessor1.Decode;
  finally
    FS1.Free;
    FS2.Free;
  end;

end;

end.
« Последнее редактирование: 20-12-2007 19:10 от Алексей1153++ » Записан
RSaga
Гость
« Ответ #5 : 09-04-2005 06:26 » 

спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines