![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по преобразованию типов переменных (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;