[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Что такое лист? Думаю тебе нужно смотреть в сторону ф-ции Delete(строка, с какого символа, по какой символ)
     
  2. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1
    Подскажите на примере как создать свое событие в Delphi.

    Допустим я хочу создать событие onDenjf

    И что бы он происходило по нажатию на button

    procedure Tform1.buttonclick(sender:eek:bject);
    begin
    //.....
    //как я понял тут надо написать
    If Assigned(FOndenjf) then FOondenjf(self);
    end;

    обработчик
    procedure trorm1.ondenjf(sender:eek:bject);
    begin
    ///тут че нибуть делаем
    end;

    Что нужно добавить еще?
     
  3. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    Если не ошибаюсь, то так:
    Button1.Onclick:=ondenjf;
     
  4. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Надо соответсвенно объявить процедурный тип и свойство-событие:



    TMyClass = class
    ...........
    private
    FOnDenjf : TNotifyEvent;
    ............
    public
    property OnDenjf: TNotifyEvent read FOnDenjf write FOnDenjf;
    end;

    И после этого ты можешь присваивать этому свойству значения процедур.

    Вместо TNotifyEvent ты можешь объявить свой процедурный тип:

    type
    TMyEvent = procedure of object({тут перечисление передаваемых аргументов по твоему усмотению});
    end;
     
    1 person likes this.
  5. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    а не проще в public объявить свою процедуру с параметрами как в процедуре, которая должна вызвать это событие, и написать так как я?
     
  6. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1
    А как создать такое событие что бы оно происходило как только в Listbox добавится 2 записиси.

    Или событие которое происходило бы если переменая стала true;
     
    #5446 denjf, 14 Mar 2010
    Last edited: 14 Mar 2010
  7. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Если компилер говорит что не знает, значит он не знает.
    Так, как показано выше.
    Ну конечно, ты повторно используешь один идентификатор.
    Ты объявляешь 2 члена класса с одним именем, свойство и процедуру.
     
  8. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Вот этот модуль поможет тебе разобраться с событиями, все комментировано и разжевано. Создай гуи-проект и замени код на этот
    Code:
    unit Unit1;  interface  uses   Classes, Forms, StdCtrls, Controls;  type {Вот смотри, это класс у которого будет событие Допустим что наш класс должен будет складывать числа а событие допусим будет возникать когда сумма меньше нуля}   TMain = class       private 	   {Это поле-событие, тут мы указываем тип 	    TNotifyEvent но можно использовать и свои}        FOnDenjf: TNotifyEvent;       public 	   {Объявляем свойство-событие в разделе паблик, чтобы событие можно было использовать извне}        property OnDenjf: TNotifyEvent read FOnDenjf write FOnDenjf;        {Собственно метод класса в котором будет генериться событие	} 	     function Sum(a, b : Integer): Integer; //     end;    {Теперь пример использования нашего класса извне   Допустим у нас есть клас формы TForm1 с компонентом Label1  Мы знаем что событие генериться когда сумма меньше нуля  и используем это знание чтобы оповестить пользователя об этом  Тогда ввведем в класс формы процедуру с такими же аргументами  как и у типа TNotifyEvent}   TForm1 = class(TForm)     Button1: TButton;     Label1: TLabel;     procedure Button1Click(Sender: TObject);     procedure Test(sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;  var   Form1: TForm1;  implementation  {$R *.dfm}  { TMain }   {Реализация метода и генрация события} function TMain.Sum(a, b : Integer): Integer; begin  result := a + b;  {проверяем результат и если он меньше нуля то генерим событие}  if (result < 0) and (assigned(FOnDEnjf))    then FOnDenjf(self); end;  {Применение} procedure TForm1.Button1Click(sender: TObject);  var 	Main: TMain;  begin    Main := TMain.Create;    Main.OnDenjf := Test;    {Вот тут пробуй подставлять разные    значения чтобы убедитьься что все работает}    Main.Sum(3, -4);    Main.Free;  end;  procedure TForm1.Test(sender: TObject);  begin   Label1.Caption := 'Сумма меньше нуля!!!';  end;  end.
     
  9. LostZero

    LostZero Member

    Joined:
    19 Jan 2008
    Messages:
    14
    Likes Received:
    18
    Reputations:
    0
    Нужно скласть программу на Паскале для построения массива с 12 елементами a=4sin3i , и вычисления среднеарифметического значения елементов которые больше за -1, и меньше чем 1.

    ХЕЛП!)
     
  10. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    a - это элемент? i, я так понимаю счетчик? Скобка где будет : a=4*sin(3)*i или a=4*sin(3*i) ?
     
    2 people like this.
  11. LostZero

    LostZero Member

    Joined:
    19 Jan 2008
    Messages:
    14
    Likes Received:
    18
    Reputations:
    0
    да) i - должна быть подстрочным знаком в буквы а, и в цифре 3
    типа маленькая буква (і) написана возле троечки)
    и возле а тоже маленькая буква (і) есть. (внизу)
     
    1 person likes this.
  12. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Поподробнее напиши, а то я че то, кроме того что в массиве 12 элементов, заданных формулой, ничего не понял..
     
  13. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    выложите delphi3 у кого есть, пожалуйста!
     
  14. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    http://snowy.ifolder.ru/3257180
     
  15. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    я этот уже качал!
    он не ставится.. если у тебя получилось поставить залей куда-то компилер оттуда.
     
  16. MaTpOc

    MaTpOc Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    а)Помогите плиз написать прогу на паскале чтобы можно было в одномерном массиве изменить порядок следования элементов.

    б)И написать программу подсчета количества элементов, попадающих между номером минимального элемента и максимального элемента в массиве из 30 чисел.
     
    #5456 MaTpOc, 15 Mar 2010
    Last edited: 15 Mar 2010
  17. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    а) не совсем понял.. как нужно что бы элементы находились?? просто в обратном порядке??? или рандомом?
    б) между минимальным элементом и каким еще то???
     
  18. MaTpOc

    MaTpOc Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    а) типо 123 а выводилось 321
    б)поправил
     
  19. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    это для первой задачи

    PHP:
    program asdf;
    const 
    n=10;
    a:array[1..nof integer;

    begin
    writeln
    ('Zapolnite massive');
    for 
    i:=1 to n do
     
    begin
      write
    ('a[',i,']=');
      
    readln(a[i]);
     
    end;
    writeln;

    writeln('Ishodniy massive');
    for 
    i:=1 to n do
     
    write(a[i], ' ');

    writeln;

    writeln('Rezultat');
    for 
    i:=n downto 1 do
     
    write(a[i], ' ');

    writeln;
    readln;
    end.

    Это для 2

    PHP:
    program asdf;
    const 
    n=30;
    a:array[1..nof integer;

    begin
    writeln
    ('Zapolnite massive');
    for 
    i:=1 to n do
     
    begin
      write
    ('a[',i,']=');
      
    readln(a[i]);
     
    end;
    writeln;

         
    := 1;
         
    := A[X];

    for 
    i:=1 to n do
        If 
    A[IThen
             Begin
                  X 
    := I;
                  
    := A[X];
              
    K=i
             End
    ;
         
         
    := 1;
         
    := A[X];


    for 
    i:=1 to n do
        If 
    A[IThen
             Begin
                  X 
    := I;
                  
    := A[X];
              
    L=i
             End
    ;

    for 
    i=K to L do 
        
    write(a[i], ' ');

        
    writeln;
        
    readln;
    end.
     
    #5459 EndLeSSDre@M, 15 Mar 2010
    Last edited: 15 Mar 2010
    1 person likes this.
  20. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    скорее for i:=n downto 1 do
     
    1 person likes this.
Thread Status:
Not open for further replies.