Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
ВнизВопрос по преобразованию типов переменных (TImage и FILE) Найти похожие ветки
← →
Pcrepair © (2011-01-04 11:41) [0]Часть кода:
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
Где же ошибка? А вообще работоспособна ли такая конструкция?
← →
Ega23 © (2011-01-04 11:52) [1]
> А вообще работоспособна ли такая конструкция?
Нет.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;
← →
_Юрий (2011-01-04 11:55) [2]Надо заводить переменную не типа File (устаревшая конструкция), а переменную типа TBitmap (не забыв создать и разрушить экземпляр).
← →
Pcrepair © (2011-01-04 15:17) [3]получилось так:
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;
правда при компиляции компиляции вылетает ошибка (ошибка доступа к памяти), но то что нужно (запись файла в глоб.ПЕРЕМ и отображение) работает
Всем спасибо
← →
KilkennyCat © (2011-01-04 15:48) [4]если это опять студенческое задание, то пофиг, а если нет, то это УЖАСНО!
← →
Pcrepair © (2011-01-04 18:02) [5]это не студенческое задание
просто изучаю возможности
ну раз считаешь что это УЖАСТНО, приведи свой вариант
что нужно:
объявить глоб ПЕРЕМ
записать в нее файл
вывести содержимое ПЕРЕМ в ТИмидж
← →
Ega23 © (2011-01-04 18:09) [6]
> что нужно:
> объявить глоб ПЕРЕМ
> записать в нее файл
> вывести содержимое ПЕРЕМ в ТИмидж
Не нужно. Если это не задание, конечно :)))
← →
KilkennyCat © (2011-01-04 22:19) [7]
> приведи свой вариант
не буду. ибо есть сомнения, что это не студенческое задание.
но попытка хрен знает скока раза загружать стрим (это ж надо так заумно назвать, цитирую:// далее идет самостоятельный, работающий код, отображение граф. Файла в компоненте при загрузке с ЖД напрямую, без диалога и размещения файла в ПЕРЕМ
и поместить в табшит шоу...), который может и не создаться никогда.
← →
Pcrepair © (2011-01-05 09:46) [8]а откуда такая нелюбовь к студенческим заданиям?
складывается впечетление что ты просто ничего не понял, но возможно это Я не достаточно хорошо объяснил
в любом случае уже все работает, читай (3)
← →
Andy BitOff © (2011-01-05 14:17) [9]Не любовь не к заданиям, а к недостудентам, которые нифига не делают и не учатся, а потом бегают по форумам и клянчут код.
← →
Студент (2011-01-09 06:14) [10]
> Form1.Image1:= Pic1;
Какой кошмар... Вы в курсе что TImage есть класс, а Image1 - экземпляр класса (а если совсем точно, то указатель на него)?
Попробуйте работать с просто массивом пикселей... Или типа того... Непонятно просто что именно Вам вообще требуется...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c