![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переменные в моей функции [D7, WinXP]
Дмитрий_177 © (2006-02-19 02:37:00)Мне нужно в моей функции строковой переменной присвоить какойнибудь текст, но эта переменная свойство компонента(Edit1.Text). Делаю так, но текст не присваивается...
myfunc(s: string): boolean;
begin
s := '1';
end;
...
myfunc(Edit1.Text)
Может надо в качестве переменной передавать сам Edit? и ему уже присваивать текст? т.е. так:
myfunc(Edit: TEdit): boolean;
begin
Edit.Text := '1';
end;
...
myfunc(Edit1)
или это еще както делается?
Zeqfreed (2006-02-21 14:47:00) [1][14] Дмитрий_177 (21.02.06 03:34)
> тут нужно задавать высоту и ширину bmp?
Смотря чего хочешь добиться. Скорее всего тут.
Virgo_Style (2006-02-21 08:08:00) [2]Дмитрий_177 (21.02.06 3:34) [14]
еще такой вопросик
не увидел
Дмитрий_177 (2006-02-21 03:34:00) [3]еще такой вопросик:
function myfunc(Image: TImage): boolean;
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
with bmp do
try
<тут нужно задавать высоту и ширину bmp? т.е. так bmp.Width := Image.Picture.Bitmap.Width;
bmp.Height := Image.Picture.Bitmap.Height;>
Canvas.Draw(0, 0, Image.Picture.Bitmap);
<дорисовка bmp>
finally
Image.Picture.Bitmap.Assign(bmp);
Free;
end;
end;
Virgo_Style (2006-02-20 21:41:00) [4]Да. Да. Потому что [9]
Дмитрий_177 (2006-02-20 21:29:00) [5]так правильно? :))
Дмитрий_177 (2006-02-19 21:37:00) [6]Если передать фунции сам Image, и потом в нем нарисовать нарисованную bmp, т.е. так:
function myfunc(Image: TImage): boolean;
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
<прорисовка bmp>
Image.Picture.Bitmap.Assign(bmp)
bmp.free;
end;
так правильно будет?
Дмитрий_177 (2006-02-19 21:14:00) [7]т.е. в этом случае не создается переменная типа TBitmap? а тоя хотел бы сделать еще типа двойной буферизации.. рисовать в переменной типа TBitmap, а потом выводить в Image1.Picture.Bitmap, чтобы не моргало )))
Гаврила (2006-02-19 20:40:00) [8]Image1.Picture.Bitmap - это объект
то есть и так уже указатель
Дмитрий_177 (2006-02-19 20:27:00) [9]Я тут передал в качестве параметра в функцию Bitmap, тоже свойство компонента (Image1.Picture.Bitmap), а функция рисует на нем... И почему-то рисует... Это правильно?
Дмитрий_177 (2006-02-19 16:35:00) [10]Спасибо, работает )))
TUser (2006-02-19 12:57:00) [11]function MyFunction(Edit:TEdit):Boolean;
begin
try
Result:=true;
Edit.Text:='ля-ля-ля' ;
except
Result:=false;
end;
end;
Zeqfreed (2006-02-19 12:56:00) [12]Так и не понял, чего хочет автор. Жаль.
Ega23 (2006-02-19 12:48:00) [13]
function MyFunction(Edit:TEdit):Boolean;
begin
Result:=Assigned(Edit);
if not Result then Exit;
Edit.Text:='ля-ля-ля' ;
end;
Но это, ИМХО, изврат.
Гаврила (2006-02-19 11:23:00) [14]Тут два момента
>myfunc(s: string): boolean;
>begin
>s := '1';
> end;
Данный синтаксис передает строку-параметр по значению. ТО есть делается копия строки, передается параметром, изменение s внутри функции не имеет эффекта вне функции
var
str: string;
begin
str:='2';
myfunc(str);
//str по прежнему равна '2';
Для того, чтобы изменилась сама строка-источник, использзуем ключевое слово var (передача параметра по ссылке)
myfunc( vars: string): boolean;
Но тут вступает в действие второй ньюанс:
вызов myfunc(Edit1.Text) не будет пропущен компилятором, потому что свойства объектов не могут передаваться как var-параметры
> Может надо в качестве переменной передавать сам Edit?
> и ему уже присваивать текст? т.е. так:
Можно и так.
Дмитрий_177 (2006-02-19 02:49:00) [15]Gorger вы имели ввиду вне функции, т.е. без всякой функции? но так мне не пойдет...
Gorger (2006-02-19 02:46:00) [16]Edit.Text := 'My text';
Самый общепринятый способ.