Announcement

Collapse
No announcement yet.

Paradox Tabelle mit Passwort durch Delphi erzeugen?

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

  • Paradox Tabelle mit Passwort durch Delphi erzeugen?

    Wei man eine Paradox-Tabelle über Cade erzeugt ist mit Hilfe der TTable Komponente ja relativ einfach. Leider gelingt es mir nicht der neuen Tabelle auch noch das benötigte Passwort zu vermitteln.

    Für Tips wie man dies löst, wäre ich sehr dankbar.

    Peter Kallenbach

  • #2
    Anbei 2 Proceduren, die das Haupt- bzw. Sub-Paßwort setzen. Werden diese Prozeduren ohne Paßwort aufgerufen, wird das entsprechende Haupt- bzw. Sub-Paßwort entfernt.

    Gelesen in der BDE-Hilfe und etwas verändert.

    Viel Erfolg. Jens.

    procedure AddTableMainPassWord(ATable : TTable; MasterPassword: string);
    const RESTRUCTURE_TRUE = WordBool(1);
    var ex : boolean;
    TblDesc: CRTblDesc;
    hDb : hDBIDb;
    begin
    if not ATable.Active then Exit;
    ex:=ATable.Exclusive;
    try
    if not ex then begin
    ATable.Close;
    ATable.Exclusive:=true;
    ATable.Open;
    end;
    FillChar(TblDesc, SizeOf(CRTblDesc), #0);
    with TblDesc do begin
    StrPCopy(szTblName, ATable.TableName);
    StrCopy(szTblType, szPARADOX);
    StrPCopy(szPassword, MasterPassword);
    bProtected := RESTRUCTURE_TRUE;
    bProtected := trim(MasterPassword)<>'';
    end;
    Check(DbiGetObjFromObj(hDBIObj(ATable.Handle), objDATABASE, hDBIObj(hDb)));
    ATable.Close;
    Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
    Session.AddPassword(MasterPassword);
    ATable.Open;
    finally
    if ex<>ATable.Exclusive then begin
    ATable.Close;
    ATable.Exclusive:=false;
    ATable.Open;
    end;
    end;
    end;

    procedure AddTableSubPassWord(ATable : TTable; MasterPassword, SubPassword : string; readonly : boolean = false);
    const RESTRUCTURE_TRUE = WordBool(1);
    var ex : boolean;
    TblDesc: CRTblDesc;
    hDb : hDBIDb;
    sec : SECDesc;
    i,r : integer;
    opt : CROpType;
    begin
    if not ATable.Active then Exit;
    ex:=ATable.Exclusive;
    try
    if not ex then begin
    ATable.Close;
    ATable.Exclusive:=true;
    ATable.Open;
    end;
    FillChar(TblDesc, SizeOf(CRTblDesc), #0);
    with TblDesc do begin
    StrPCopy(szTblName, ATable.TableName);
    StrCopy(szTblType, szPARADOX);
    StrPCopy(szPassword, MasterPassword);
    bProtected := RESTRUCTURE_TRUE;
    if Trim(SubPassword)<>'' then begin
    opt:=crADD;
    pecrSecOp:=@opt;
    iSecRecCount:=1;
    FillChar(sec, SizeOf(SECDesc), #0);
    StrPCopy(sec.szPassword, SubPassword);
    sec.eprvTable:=prvFULL;
    if ReadOnly then r:=prvREADONLY else r:=prvFULL;
    for i:=0 to ATable.FieldDefs.Count-1 do sec.aprvFld[i]:=r;
    psecDesc:=@sec;
    end;
    end;
    Check(DbiGetObjFromObj(hDBIObj(ATable.Handle), objDATABASE, hDBIObj(hDb)));
    ATable.Close;
    Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
    Session.AddPassword(MasterPassword);
    ATable.Open;
    finally
    if ex<>ATable.Exclusive then begin
    ATable.Close;
    ATable.Exclusive:=false;
    ATable.Open;
    end;
    end;
    end

    Comment


    • #3
      Das sieht zwar alle furchtbar kompliziert aus, aber vielen Dank für die Antwort

      Comment

      Working...
      X