Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.01.2009, 12:41
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
По умолчанию Процедуры и функции...

Мне надо такую функцию, что б в нее вводились некоторые координаты, а она проводила над ними некоторые операции с ними, выдовала их.
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием
  #2  
Старый 27.01.2009, 13:28
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Код:
procedure someproc(var x,y:integer);

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 27.01.2009, 15:33
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
По умолчанию

Боюсь меня неправильно поняли...
Есть 2 точки; Одна из них по этой процедуре должна перемещаться к другой; значит процедура получает 4 числа (координаты 1 и 2 точки), а выдает уже 2 (новые координаты первой точки)... Как это сделать? Если можно то напишите код проги которая будет использовать эту процку. Зарание спасибо...
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием
  #4  
Старый 28.01.2009, 11:41
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Цитата:
Сообщение от Interface
Боюсь меня неправильно поняли...
Есть 2 точки; Одна из них по этой процедуре должна перемещаться к другой; значит процедура получает 4 числа (координаты 1 и 2 точки), а выдает уже 2 (новые координаты первой точки)... Как это сделать? Если можно то напишите код проги которая будет использовать эту процку. Зарание спасибо...
Код:
Type
    TPoint=record
        x,y: integer;
    end;

var
  Point1, Point2: TPoint

function MovePoint(P1, P2: TPoint):TPoint;
begin
    // тут код перемещения P1
    Result:=P1;
end;
Ответить с цитированием
  #5  
Старый 29.01.2009, 07:05
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
Хорошо

Все понял! Большое спасибо!
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием
  #6  
Старый 29.01.2009, 15:29
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
Восклицание Помогите!

Написал такой код:
Код:
unit Unit1;

interface

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

type
 TPoint=record
        x,y: integer;
    end;
  TForm1 = class(TForm)
    Timer1: TTimer;
    s: TSpeedButton;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
i : integer;
  Form1: TForm1;
  

implementation

{$R *.dfm}


function  MovePointRound(x1,y1,x2,y2,l,i : Integer): TPoint;
begin
x1 := x2+Round(l*cos(i));
y1 := y2+Round(l*sin(i));
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
p : Tpoint;
begin
p := MovePointRound(s.Left,s.Top,500,500,79,i);
s.Left := p.x;
s.Top := p.y;
i := i + 10;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i := 10;
end;

end.
Почему он не работает? Кнопка замирает влевом верхнем углу!
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием
  #7  
Старый 29.01.2009, 15:41
k@Z@k k@Z@k вне форума
Новичок
 
Регистрация: 31.07.2007
Сообщения: 55
Репутация: 12
По умолчанию

Код:
.....
var
.....
 p:TPoint
....
procedure TForm1.FormCreate(Sender: TObject);
begin
i := 10;
p.x:=500;
p.y:=500;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
p := MovePointRound(79,i,p);
s.Left := p.x;
s.Top := p.y;
i := i + 10;
end;


function  MovePointRound(l,i : Integer;P1:TPoint): TPoint;
begin
result.x:=P1.x+Round(l*cos(i));
result.y:=P1.y+Round(l*sin(i));
end;

Последний раз редактировалось k@Z@k, 29.01.2009 в 15:51.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025