u koliko sam preterao sa brojem tema i pitanja nek administrator briše.
Suština je snimiti strukturu zaglavlja iz MySql tabele u promenjivu.
type
PHeaderField = record
Index : Integer;
FieldName : String;
FieldType : TFieldType;
FieldKind : TFieldKind;
end;
type
THederField = array of PHeaderField;
U glavnoj formi definišem sve promenjive koje su mi potrebne u public, npr.:
public
tab_firme_header : THederField;
tab_mesta_header : THederField;
tab_racuni_header : THederField;
itd...
Potrebnu pormenjivu prosleđujem u Thread na obradu :
MyThread:= TMyThread.Create(TAB_FIRME,'',tab_firme_header,PConnect);
MyThread:
TMyThread = class(TThread)
private
...
public
fHeader : THederField; // problematično
constructor Create(Sender: TObject; Filter: String; nHeader: THederField;
sConn: TConnect );
...
constructor TMyThread.Create(Sender: TObject; Filter: String;
nHeader: THederField; sConn: TConnect);
begin
..
fHeader := nHeader;
...
end;
...
procedure TMyThread.Execute;
begin
Synchronize(@OpenTable);
end;
...
procedure TMyThread.OpenTable;
begin
...
fHeader:=GetHeaderField(tQ);
...
end;
...
function GetHeaderField(Source: TSQLQuery): THederField;
var
i : Integer;
begin
// ucitavanje strukture tabele
SetLength(Result,Source.FieldCount);
for i:=0 to Source.FieldCount-1 do
begin
Result[i].Index := i;
Result[i].FieldName := Source.Fields[i].FieldName;
Result[i].FieldType := Source.Fields[i].DataType;
Result[i].FieldKind := Source.Fields[i].FieldKind;
end;
end;
Mislim da sam dobro prezentovao problem, kad se Thread izvrši promenjiva se ne definiše, proverim je posle, bude prazna.
fHeader:=GetHeaderField(tQ);