TTimer w moim obiekcie

Odpowiedz Nowy wątek
2006-12-23 16:23
0

Witam wszystkich,
Chciałbym napisać program wykorzystujący tablice moich własnych obiektów. Założenia są takie: w obiekcie mam kilka zmiennych, kilka wskaźników do obiektów tego samego typu i do tego 1 ttimer i ewentualnie 1 tlistbox lub tmemo.

  PItem = ^TItem;
  TItem = object
    public
    busydelay: TTimer;
    loged_events: TListBox;
    busy :boolean;
    x,y:integer;
    ktype: integer;
    slot : array [0..7] of PItem;
    function on_recive(pakiet: PPakiet; from: PItem):boolean;
    function on_send(pakiet: PPakiet; from: PItem):boolean;
    procedure on_timer();

  end;

I teraz rodzi się problem, nie mogę się dostać do timera i listboxa. W funkcji on_send daje

self.busydelay :=TTimer.Create(@self);

jednak nnie moge ustawiać interwału, ani innych właściwości, bo dostaje monity "...acces violation...". To samo z TMemo. Czy tego typu rzeczy robi sie inaczej? wskaźnikami? klasami czy jeszcze inaczej?

Wielkie dzięki za odpowiedzi i przy okazji
wesołych świąt forumowiczom.

Pozostało 580 znaków

2006-12-23 16:50
0

Po co w ogóle używasz starych obiektów(object)? lepiej używać klas (class). Poza tym mieszanie tych dwóch rzeczy nie jest wskazane ale jak już musisz to Ttimer.create(nil) a nie Ttimer.create(@self). Poza tym napisz dokładnie kiedy masz to AV. Po stworzeniu ttimera powinno wszystko działać.

Pozostało 580 znaków

2006-12-23 17:07
0

Błąd wyskakuje przy tworzeniu. Zresztą teraz próbuje zrobić to za pomocą klasy, też to samo. Próbuje poćwiczyć całkowite podstawy:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  dd = class
  public
  aa:integer;
  bb:boolean;
  end  ;

var
  Form1: TForm1;
  ff: dd;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ff.Create;
  ff.aa := 7;
end;

end.

Też się wywala na create. Więc już nie wiem co robie źle.

Pozostało 580 znaków

2006-12-23 17:27
0

powinno być ff:=dd.create a tak w ogóle to w sprawie takich podstaw pisz posty w dziale Newbe a nie tutaj

Pozostało 580 znaków

2006-12-23 17:40
0
Marmar napisał(a)

a tak w ogóle to w sprawie takich podstaw pisz posty w dziale Newbe a nie tutaj
błąd - powinno być załatw sobie książkę lub kurs bo po omacku to daleko nie zajdziesz


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0