Witam,
jako że używam Delphi 7 nie mogę w rekordzie umieścić metody więc korzystam z klasy. Właściwie o klasach zacząłem uczyć się od niedawna. Już mówię w czym rzecz.
Chcę napisać własny unit z najczęściej używanymi przeze mnie procedurami, funkcjami etc. Nazwałem go "RS". W module tym stworzyłem klasę dziedziczącą po TObject:
type
RS = class (TObject)
procedure kom(var tekst: string; var okno: string; var flaga: byte);
end;
Na innej formie gdy chcę skorzystać z tego modułu (oczywiście do uses dopisuję "RS") stworzyłem zmienną globalną typu tej klasy którą nazwałem "myRS". Dla tej formy w zdarzeniu OnCreate zapisałem kod:
myRS := rs.Create;
A dla OnClose:
myRS.Free;
I teraz do rzeczy - gdy chcę oprogramować zdarzenie powiedzmy przycisku, aby wykonywało metodę zdefiniowaną w klasie RS z modułu RS_, pojawia mi się błąd o treści "[Error] Glowna_Unit.pas(942): Constant object cannot be passed as var parameter". Oto kod przycisku:
procedure TForm1.Button1Click(Sender: TObject);
begin
myRS.kom('Tresc', 'Okienko', 1);
end;
A oto metoda zadeklarowana i zdefiniowana w klasie RS:
procedure RS.kom(var tekst: string; var okno: string; var flaga: byte);
begin
{
1: Information
2: Confirmation
3: Warning
4: Stop
}
case flaga of
1: Application.MessageBox(PChar(tekst), PChar(okno), MB_OK+ MB_ICONInformation);
2: Application.MessageBox(PChar(tekst), PChar(okno), MB_OK+ MB_ICONExclamation);
3: Application.MessageBox(PChar(tekst), PChar(okno), MB_OK+ MB_ICONWarning);
4: Application.MessageBox(PChar(tekst), PChar(okno), MB_OK+ MB_ICONStop);
end;
end;
Jest to metoda publiczna. Nie wiem dlaczego błąd się pojawia, ponieważ parametry oznaczone są przez słowo var (nie są stałe) a w komunikacie chodzi o stały parametr (chyba że ja coś źle rozumiem). W czym tkwi błąd?
Pozdrawiam sredecznie!