Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по преобразованию типов переменных (TImage и FILE) [D7]


Pcrepair ©   (2011-01-04 11:41:00) 

Часть кода:
var
 Form1: TForm1;
 Pic1: File; // объявление глобальной ПЕРЕМ типа файл
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then //выбираем нужный граф. файл
    begin
         AssignFile(Pic1, OpenDialog1.FileName); //грузим выбранный файл в ПЕРЕМ
         reset(Pic1);  //разрешаем чтение файла
    end;
end;
// далее идет самостоятельный, работающий код, отображение граф. Файла в компоненте при загрузке с ЖД напрямую, без диалога и размещения файла в ПЕРЕМ
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
   Form1.Image1.Picture.LoadFromFile('E:\Study\Lesson_10\1.bmp');
end;
// далее идет пока не работающий код. Задача: при помощи диалога поместить файл в ПЕРЕМ и при переходе на страницу(по событию OnShow)  отобразить граф файл в компоненте TImage
begin
   Form1.Image1:= Pic1; //типа присвоить компоненте значение ПЕРЕМ?
end;
Компилятор говорит: Е2010 несовместимые типы TImage и FILE
Где же ошибка? А вообще работоспособна ли такая конструкция?


Студент   (2011-01-09 06:14:00) [1]


> Form1.Image1:= Pic1;


Какой кошмар... Вы в курсе что TImage есть класс, а Image1 - экземпляр класса (а если совсем точно, то указатель на него)?

Попробуйте работать с просто массивом пикселей... Или типа того... Непонятно просто что именно Вам вообще требуется...


Andy BitOff   (2011-01-05 14:17:00) [2]

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


Pcrepair   (2011-01-05 09:46:00) [3]

а откуда такая нелюбовь к студенческим заданиям?
складывается впечетление что ты просто ничего не понял, но возможно это Я не достаточно хорошо объяснил
в любом случае уже все работает, читай (3)


KilkennyCat   (2011-01-04 22:19:00) [4]


> приведи свой вариант

не буду. ибо есть сомнения, что это не студенческое задание.
но попытка хрен знает скока раза загружать стрим (это ж надо так заумно назвать, цитирую: // далее идет самостоятельный, работающий код, отображение граф. Файла в компоненте при загрузке с ЖД напрямую, без диалога и размещения файла в ПЕРЕМи поместить в табшит шоу...), который может и не создаться никогда.


Ega23   (2011-01-04 18:09:00) [5]


> что нужно:
> объявить глоб ПЕРЕМ
> записать в нее файл
> вывести содержимое ПЕРЕМ в ТИмидж


Не нужно. Если это не задание, конечно :)))


Pcrepair   (2011-01-04 18:02:00) [6]

это не студенческое задание
просто изучаю возможности
ну раз считаешь что это УЖАСТНО, приведи свой вариант
что нужно:
объявить глоб ПЕРЕМ
записать в нее файл
вывести содержимое ПЕРЕМ в ТИмидж


KilkennyCat   (2011-01-04 15:48:00) [7]

если это опять студенческое задание, то пофиг, а если нет, то это УЖАСНО!


Pcrepair   (2011-01-04 15:17:00) [8]

получилось так:
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then
    begin
         Pic1 := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
    end;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
   Image1.Picture.Bitmap.LoadFromStream(Pic1);
end;
правда при компиляции компиляции вылетает ошибка (ошибка доступа к памяти), но то что нужно (запись файла в глоб.ПЕРЕМ и отображение) работает
Всем спасибо


_Юрий   (2011-01-04 11:55:00) [9]

Надо заводить переменную  не типа File (устаревшая конструкция), а переменную типа TBitmap (не забыв создать и разрушить экземпляр).


Ega23   (2011-01-04 11:52:00) [10]


> А вообще работоспособна ли такая конструкция?


Нет.
var
 bmp: TBitmap;
begin
 if not OpenDialog1.Execute then Exit;
 bmp := TBitmap.Create;
 try
   bmp.LoadFromFile(OpenDialog1.FileName);

   Image1.Picture.Assign(bmp);  // Вот тут может быть не так, навскидку не помню а Delphi под рукой нет
 finally
   bmp.Free;
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо