[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 { "TDataBase.Replace" erledigt).                                   }
 { ---------------------------------------------------------------- }
 { Holt sich die Informationen - die "UpDatePrepare" vorsorglich    }
 { gespeichert hat - und den neuen Schl.sselausdruck und .bergibt   }
 { beides an "IdxReplace" aus LLIndex, das die eigentliche Arbeit   }
 { erledigt.                                                        }
 { ---------------------------------------------------------------- }

   PROCEDURE TIndex.UpDateIndex;


 { ---------------------------------------------------------------- }
 { .hnliche Aufgabe wie "UpDateIndex", nur mit dem kleinen Unter-   }
 { schied, da. es jetzt keinen alten Inhalt gibt (es wurde ja ein   }
 { Datensatz angeh.ngt) und deshalb auch die entsprechende Methode  }
 { "IdxAppend" von LLIndex Verwendung findet.                       }
 { ---------------------------------------------------------------- }

   PROCEDURE TIndex.apPendIndex;


 { ---------------------------------------------------------------- }
 { L..t eine Reindizierung durchf.hren; als Auslastungsfaktor wird  }
 { dabei die in "dbTypes" definierte typisierte Konstante "IdxAus-  }
 { lastung" verwendet. N.here Hinweise dazu siehe Unit "LLIndex".   }
 { Der R.ckgabewert ist bei erfolgreicher Ausf.hrung True, sonst    }
 { False.                                                           }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.ReIndex : BOOLEAN;


 { ---------------------------------------------------------------- }
 { Baut die komplette Indexdatei neu auf - notwendig nur nach einem }
 { Pack-Vorgang oder nach "Create".                                 }
 { Der R.ckgabewert ist bei erfolgreicher Ausf.hrung True, sonst    }
 { False.                                                           }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.ReBuild : BOOLEAN;


 { ---------------------------------------------------------------- }
 { Gibt den eigenen Dateinamen (sprich, den der Indexdatei) zur.ck. }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.FileName : PATHSTR;


 { ---------------------------------------------------------------- }
 { Gibt den Schl.sselausdruck - so wie er im Kopf der Indexdatei    }
 { gespeichert ist - zur.ck. N.heres siehe Modul "dbTypes" - Typ    }
 { "IdxCreateInfo".                                                 }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.Key : STRING;


 { ---------------------------------------------------------------- }
 { Gibt den Typ der Indexdatei zur.ck; in der Version 1.0 von TDB   }
 { kann das praktisch nur NTX sein. N.heres siehe Modul "dbTypes" - }
 { Typ "IdxCreateInfo".                                             }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.Typ : TIdxTyp;


 { ---------------------------------------------------------------- }
 { Gibt die L.nge des Indexausdruckes - wie im Kopf der Indexdatei  }
 { definiert - zur.ck. N.heres siehe Modul "dbTypes" - Typ "Idx-    }
 { CreateInfo".                                                     }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.KeyLen : WORD;


 { ---------------------------------------------------------------- }
 { Versucht "abzusch.tzen", ob der Index zusmmengesetzt ist; er-    }
 { kennbar ist dieser Umstand daran, da. im Ausdruck das Zeichen    }
 { "+" (Zusammensetzen von mehreren Feldern) oder "(" (String-      }
 { funktionen wurden angewandt) vorkommt.                           }
 { Gibt False zur.ck, wenn ein anscheinend "sauberer" (i.e. unbe-   }
 { handelter) Indexausdruck vermutet wird, sonst True.              }
 { ---------------------------------------------------------------- }

   FUNCTION TIndex.IsCombined : BOOLEAN;


 { ---------------------------------------------------------------- }
 { Schmei.t sich selbst wieder aus dem Speicher - nachdem zuerst    }
 { die Datenstrukturen der Low-Level-Indexroutinen gel.scht wurden. }
 { Wird eigentlich nie direkt ben.tigt, da das Datenbankobjekt, in  }
 { das die Indexobjekte eingef.gt werden, das ordnungsgem..e Ende   }
 { .bernimmt.                                                       }
 { ---------------------------------------------------------------- }

   DESTRUCTOR TIndex.CLOSE;


 { ---------------------------------------------------------------- }
 {                      T D A T A B A S E                           }
 { ---------------------------------------------------------------- }

 { ---------------------------------------------------------------- }
 { Datenbank-Objekt: Verwaltung der eigentlichen Datenbank; rudi-   }
 { ment.re Funktionen zum .ffnen und Erzeugen von Datenbanken und   }
 { zum Lesen, Schreiben und L.schen von Datens.tzen / Memos.        }
 { ---------------------------------------------------------------- }
 { f enth.lt alle f.r eine Datenbank direkt relevanten Daten wie    }
 { Dateiname, Anzahl und Beschreibung der Felder, aktuelle Position }
 { des Satzzeigers und Anzahl der Datens.tze, diverse Dateibe-      }
 { schreibungen usw. usf.                                           }
 { f wird vor allem f.r die Identifizierung der (prozeduralen) Low- }
 { Level-Routinen ben.tigt.                                         }
 { ---------------------------------------------------------------- }
 { Die Methoden lassen sich in folgende Gruppen einteilen:          }
 { - Use, Create, Close: Constructor's zum .ffnen bzw. zum Er-      }
 {   stellen von Datenbanken; Destructor zum Schlie.en.             }
 { - Go, Skip, DeSkip, First, Last: Zum Setzen der Position des     }
 {   Satzzeigers.                                                   }
 { - EOF, BOF, Count, RecNo, LastRec: Zum Ermitteln der aktuellen   }
 {   Position des Satzzeigers.                                      }
 { - Read, Append, Replace: Zum direkten Lesen, Anh.ngen und .ber-  }
 {   schreiben von Datens.tzen.                                     }
 { - ReadL, ReadR, ReadD, ReadD_, ReadB, ReadM, ReplaceL, ReplaceR, }
 {   ReplaceD, ReplaceD_, ReplaceB und ReplaceM: Lesen und Schrei-  }
 {   ben von Datensatz-Feldern unter Verwendung der entsprechenden  }
 {   Turbo-Pascal- bzw. vom TDB-System definierten Spezial-Typen.   }
 { - Delete, Recover, Deleted: L.schen und Wiederherstellen von     }
 {   Datens.tzen, Abfrage, ob gel.scht.                             }
 { - AnzahlFelder, FeldName, FeldNummer, FeldTyp, ContainsMemos:    }
 {   Ermitteln des Aufbaus unbekannter Datenbanken.                 }
 { - RecordSize, HeaderSize, FileSize, LastUpdate, IsModified,      }
 {   dBVersion: Allgemeine Informationen .ber die Datenbankdatei.   }
 { - IndexOn, IsIndexed: Festlegen von Indices.                     }
 { - Search, Continue: Suchen nach vorgegebenen Feldinhalten.       }
 { - Pack: Packt die Datenbank - und alles, was damit zusammenh.ngt }
 {   (Index-Files, Memos).                                          }
 { PRIVAT(E):                                                       }
 {   Die Private-Methoden sind dem Benutzer nicht zug.nglich.       }
 { - CompXXX, CompXXXOld, IsIt, IsItOld, PruefeRest: Zur Verwendung }
 {   durch "Search" vorgesehen.                                     }
 { - MemoRead, MemoReplace, MemoAppend: Lesen, Schreiben und An-    }
 {   h.ngen von Memos.                                              }
 { ---------------------------------------------------------------- }

 { ---------------------------------------------------------------- }
 { .ffnet die angegebene Datenbank - sofern vorhanden und OK. Der   }
 { eigentliche Job wird von der Low-Level-Routine dbUse .bernommen, }
 { die im Fehlerfall den Fehlerstatus via Unit Error setzt; dabei   }
 { wird auch der Constructor mit FAIL beendet, sprich, das Objekt   }
 { wird nicht (!) erzeugt.                                          }
 { Wenn die Datenbank auch Memofelder enth.lt, so wird auch die     }
 { Memodatei ge.ffnet.                                              }
 { ---------------------------------------------------------------- }

   CONSTRUCTOR TDataBase.Use (Name : PATHSTR);


 { ---------------------------------------------------------------- }
 { Erzeugt eine Datenbank unter dem angegebenen Namen. Im Record    }
 { CreateInfo m.ssen die Informationen .ber die enthaltenen Felder  }
 { und deren Anzahl stehen.                                         }
 { Der eigentliche Job wird von der Low-Level-Routine dbUse .ber-   }
 { nommen, die im Fehlerfall den Fehlerstatus via Unit Error setzt. }
 { ---------------------------------------------------------------- }
 { Die Angaben werden einem Plausibilt.tstest unterzogen, im Falle  }
 { einer falschen / ung.ltigen Angabe wird wieder Error mit der     }
 { Aufgabe betraut, den Fehler bekanntzugeben und der Constructor   }
 { endet mit FAIL, sprich, das Objekt wird nicht (!) erzeugt.       }
 { ---------------------------------------------------------------- }

   CONSTRUCTOR TDataBase.Create (Name : PATHSTR;
                                           CreateInfo : TCreateInfo);


 { ---------------------------------------------------------------- }
 { Schlie.t die Datenbank wieder.                                   }
 { ---------------------------------------------------------------- }

   DESTRUCTOR TDataBase.CLOSE;


 { ---------------------------------------------------------------- }
 { Setzt den Datensatzzeiger auf den angegebenen Datensatz - sofern }
 { vorhanden. Es wird eine Bereichs.berpr.fung vorgenommen, die     }
 { False zur.ckgibt, wenn nicht positioniert werden konnte.         }
 { ---------------------------------------------------------------- }
 { Sollte die Datenbank indiziert sein (PrimeIdx <> Nil), so wird   }
 { zwar ebenfalls auf den Datensatz gesprungen, der in der Daten-   }
 { bankordnung an der p-ten Stelle steht; um den Index-Zeiger je-   }
 { doch ebenfalls mitf.hren zu k.nnen, mu. der entsprechende Satz   }
 { erst in der Indexdatei (sequentiell !!!) gesucht und darauf posi-}
 { tioniert werden !                                                }
 { ---------------------------------------------------------------- }
 { Bei "Go" wird auf den angegebenen Satz - unabh.ngig vom "Set-    }
 { Deleted"-Flag - auch dann positioniert, wenn dieser gel.scht     }
 { ist !                                                            }
 { ---------------------------------------------------------------- }
 { Das Gegenst.ck zu "Go" ist "RecNo", das die (physikalische) Po-  }
 { sition des Satzzeigers zur.ckgibt.                               }
 { ---------------------------------------------------------------- }
 { Aus Performance-Gr.nden sollte auf "Go" - ebenso auf "IdxGo" -   }
 { in indizierten Datenbanken verzichtet werden zugunsten von Skip. }
 { Eine entsprechende Konzeption ist bereits in der Analyse / im    }
 { Entwurf von N.ten und sollte keineswegs der Bequemlichkeit hal-  }
 { ber .bergangen werden !                                          }

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson