Announcement

Collapse
No announcement yet.

TTable-Komponente in Unit verwenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TTable-Komponente in Unit verwenden

    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

  • #2
    Versuche es mal mit <BR>
    if not assigned (dbaTmp) then begin<BR>
    try<BR>
    except<BR>
    end;<BR>
    end;<BR&gt

    Comment


    • #3
      Hallo,<br>
      wenn das eine neue Klasse werden soll, probiere mal das:<br>
      <PRE>
      type<br>
      TuStatus = class(TComponent) <br>
      private <br>
      { Private-Deklarationen } <br>
      dbtaTmp : TTable; <br>
      public <br>
      { Public-Deklarationen } <br>
      constructor Create(AOwner: TComponent); override;<br>
      destructor Destroy; override;<br>
      function GetStatus(sTabelle:String):Boolean; <br>
      procedure SetStatus(sTabelle:String; bSperr:Boolean); <br>
      end; <br><br>
      constructor TuStatus.Create(AOwner: TComponent);<br>
      begin<br>
      inherited Create(AOwner);<br>
      dbtaTmp:=TTable.Create(Self); <br>
      dbtaTmp.DatabaseName:='MaQMaIntern'; <br>
      dbtaTmp.TableName:='Status'; <br>
      dbtaTmp.Open; <br>
      end;<br><br>
      destructor TUStatus.Destroy;<br>
      begin<br>
      try <br>
      dbaTmp.Close <br>
      except <br>
      end; <br>
      dbaTmp.Free; <br>
      inherited Destroy;<br>
      end;<br>
      </PRE&gt

      Comment

      Working...
      X