Hallo,
ich möchte unter Delphi 5 in einer Unit auf eine Paradox-Tabelle zugreifen. Dies funktioniert einwandfrei, wenn ich die table in jeder Procedure/Function neu erzeuge und am Ende wieder freigebe. Wie aber funktioniert es, sie nur einmal zu erzeugen und bei weiteren Aufrufen nur noch zu verwenden. Folgendes Vorgehen führt beim aufruf von "if dbtaTmp=nil..." zum Absturz.
Ist das Vorgehen überhaupt sauber?
<PRE>
type
TuStatus = class(TComponent)
private
{ Private-Deklarationen }
dbtaTmp : TTable;
public
{ Public-Deklarationen }
function GetStatus(sTabelle:String):Boolean;
procedure SetStatus(sTabelle:String; bSperr:Boolean);
end;
var
uStatus : TuStatus;
implementation
function TuStatus.GetStatus(sTabelle:String):Boolean;
begin
if dbtaTmp=nil then
begin
dbtaTmp:=TTable.Create(Self);
dbtaTmp.DatabaseName:='MaQMaIntern';
dbtaTmp.TableName:='Status';
dbtaTmp.Open;
end;
:
:
end;
</PRE>
Folgendes Vorgehen funktioniert einwandfrei
<PRE>
function TuStatus.GetStatus(sTabelle:String):Boolean;
begin
dbtaTmp:=TTable.Create(Self);
try
dbtaTmp.DatabaseName:='MaQMaIntern';
dbtaTmp.TableName:='Status';
dbtaTmp.Open;
:
:
finally
dbtaTmp.Free;
end;
end;
</PRE>
Allerdings muss die Tabelle immer wieder neu geöffnet werden.
Bin für Eure Hilfe sehr dankbar.
Gruß Gerd
ich möchte unter Delphi 5 in einer Unit auf eine Paradox-Tabelle zugreifen. Dies funktioniert einwandfrei, wenn ich die table in jeder Procedure/Function neu erzeuge und am Ende wieder freigebe. Wie aber funktioniert es, sie nur einmal zu erzeugen und bei weiteren Aufrufen nur noch zu verwenden. Folgendes Vorgehen führt beim aufruf von "if dbtaTmp=nil..." zum Absturz.
Ist das Vorgehen überhaupt sauber?
<PRE>
type
TuStatus = class(TComponent)
private
{ Private-Deklarationen }
dbtaTmp : TTable;
public
{ Public-Deklarationen }
function GetStatus(sTabelle:String):Boolean;
procedure SetStatus(sTabelle:String; bSperr:Boolean);
end;
var
uStatus : TuStatus;
implementation
function TuStatus.GetStatus(sTabelle:String):Boolean;
begin
if dbtaTmp=nil then
begin
dbtaTmp:=TTable.Create(Self);
dbtaTmp.DatabaseName:='MaQMaIntern';
dbtaTmp.TableName:='Status';
dbtaTmp.Open;
end;
:
:
end;
</PRE>
Folgendes Vorgehen funktioniert einwandfrei
<PRE>
function TuStatus.GetStatus(sTabelle:String):Boolean;
begin
dbtaTmp:=TTable.Create(Self);
try
dbtaTmp.DatabaseName:='MaQMaIntern';
dbtaTmp.TableName:='Status';
dbtaTmp.Open;
:
:
finally
dbtaTmp.Free;
end;
end;
</PRE>
Allerdings muss die Tabelle immer wieder neu geöffnet werden.
Bin für Eure Hilfe sehr dankbar.
Gruß Gerd
Comment