Zdravím, prosím o popostrčení v následujícím problému: mám aplikaci, která zpracovává soubory zůzných druhů a pro přehlednost zdrojáku mám procedury, proměnné, vlastní struktury a pole těchto struktur, funkce atd. pro každý formát souboru v různých unitech (např. uvádělný U__ZdrojeRN2Archiv). Problém je s dostupností proměnných a polí napříč těmito Unity. Tam kde je unit spojen s formulářem (Main), tam proměnná globálně dostupná je. Tam kde ne - je problém. Podstatné části zdrojáku jde:
unit U__ZdrojeRN2Archiv;
interface
uses ComCtrls; //a tak dále...
type TRN2Archiv = record
KompletZaznam: String;
ZacatekZpravy: String;
Obsah: String;
end;
type TZdrojeRN2Archiv = class
public
function PrekladHlavicky(Index: Integer): String;
end;
var
ZdrojeRN2ARchiv: TZdrojeRN2Archiv;
Rn2Archiv: Array of TRN2Archiv;
implementation
uses U_Main; //atd...
function .... begin ....... end;
end.
Pokus o práci s polem Rn2Archiv z Main (kterýžto Unit je spojen s hlavním formulářem aplikace):
unit U_Main;
interface
uses Windows; //atd...
type TMain = class(TForm)
P_Nastroje: TPanel; //atd...
procedure B_NacistClick(Sender: TObject);//atd...
end;
var Main: TMain; //atd...
implementation
uses U__ZdrojeRN2Archiv, //atd...
{$R *.dfm}
procedure TMain.B_NacistClick(Sender: TObject);
begin
SetLength(ZdrojeRn2Archiv.Rn2Archiv, 0);
//Nelze! ZdrojeRn2Archiv.Rn2Archiv je undeclared identifer!
end;
end.
Vložím-li v uniě U_ZdrojeRN2Archiv řádek "Rn2Archiv: Array of TRn2_Archiv;" do části Public, kompilátor to sice přežvýká ale jakmile se z kteréhokoliv místa ve vlastní unitě (U_ZdrojeRN2Archiv) nebo jiné (U_Main) pokusím pracovat s polem Rn2Archiv, (např: SetLength(ZdrojeRN2Archiv.Rn2Archiv, 0)); skončím na Access violation...
Kam mám tedy vložit deklaraci "RN2Archiv: Array of TRn2_Archiv", aby byla dostupná pro ostatní unity, bez ohledu na to, jsou-li spojené s formuláři či nikoliv...?
Děkuji, N.