osobny unit - dostęp do metody..

0

Mam sobie jakiś program, i do tego dołączam osobny Unit np. Unit1.pas ... Chce sobie tam zapisać pewne procedury i funkcje.. Ale problem polega na tym, że chcę mieć do nich "bezpośredni dostęp" (RTTI).. no to sobie zapisałem je do klasy:

unit Unit1;

interface

uses
  SysUtils, Classes;

type
  TMyProc = class(TObject)

  published

  function JakasFunkcja: Integer;
  procedure JakasProcedura: Integer;

 // itd

Niestety przy takiej deklaracji, chcąc użyć jakąś z tych procedur / funkcji może co chwila właczać konstruktora klasy, później zwalniać.. więc nie robota.. Jak mogę zrobić to jakoś inaczej ? ..

0

moze wyrzucic TObject po class ?

0

Jesli to odrębne funkcje nie korzystajace z danych wlasnego obiektu to moze zwyczajnie stwotrzyc raz jeden obiekt tego typu i nie zwalniac juz jego pamieci? (Choc prawde mowiac nie badzo rozumiem dlaczego takie wazne jest dla Ciebie zeby to byly funkcje/procedur published a nie zwykle funkcje/ procedury bez zadnej klasy)

0

Globalny varaiabl o ybie klasy tych procedur tworzony w initializa głównego unita a zwalniany odczas wyłączania bazowego unita i po prtoku, poza tym metody powinieneś dawać ne w published a w public, w published są zwykle tylko właściwości.

ps. do tych co nie łapia chodzi o wywoływanie metody przez jej nazwę zapisaną w stringu, czyli

'nazwametody'

a nie nazwametody

0
unit Unit1;

interface

uses
   SysUtils, Classes;

type
   TMyProc = class(TObject)

   published

   function JakasFunkcja: Integer;
   procedure JakasProcedura: Integer;

  // itd
end;

procedure cos;
0

Rozumiem, ze potrzebujesz metod statycznych. Jezeli jest to D7 (chyba juz od tej wersji sa) to mozesz je wywolywac tak jak Create z konstruktora:
NazwaKlasy.Metoda();
bez tworzenia obiektu.
Jezeli jednak to starsze delphi to mozesz sprobowac zrobic to na 2 sposoby.

  1. Sproboj zamiast deklarowac function/procedure dac constructor (nie wiem czy to przejdzie)
  2. Utworz jeden obiekt tej klasy w sekcji initialization i daj go w Unicie jako zmienna globalna.

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