AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TQuery oder TTable?

Ein Thema von Piro · begonnen am 29. Jan 2004 · letzter Beitrag vom 1. Feb 2004
 
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: TQuery oder TTable?

  Alt 1. Feb 2004, 18:15
Hi Daywalker299!

Ich schreibe nur mal flach über dieses Thema, nicht so in die Tiefe. Wie man Objekte schreibt mit vererben und so, sollte klar sein. Wenn man eine typisierte Datendatei hat kann man dafür eine Index führen. Klar Datenbanken machen so etwas mal eben "nebenbei", nur wer diese Banken nicht verwenden will, muß das schon zu Fuß machen. Das typische Beispiel "Adreßbuch" möchte ich mal verwenden:
Code:
Type TAdresse = Packed Record
       Belegt    : Boolean;
       Name      : String[24];
       Vorname   : String[24];
       Strasse   : String[20];
       Hausnummer : String[5];
       PLZ       : String[5];
       Ort       : String[20];
     End

     TAdrIdx = Packed Record
       Belegt
       Links
       Rechts
       SatzNr
       SuchName
       Anzeige
     End;
Mie diesen beiden Typen könnten man das ganze schon einmal laufen lassen. Die Inhalte gibt man über Edit-Felder ein und speichert sie in die Dat-Datei. Nach der Speicherung muß man den Index schreiben. Ist es eine Änderung, dann den alten Indexsatz suchen und dort "Belegt" auf false setzen. Dann den neuen Indexsatz zusammenstellen. Eine Variable des Typen TAdrIdx mit nullen füllen (FillChar mit #0), belegt dann auf True, SatzNr beim Speichern in der Dat-Datei merken, SuchName ohne Umlaute mit ausschließlich großen Buchstaben setzen und in Anzeige eine Schöne Opitik für die Auswahlliste. Jetzt muß die Indexdatei durchlaufen werden, damit die Position des neuen Eintrages gesucht wird. Immer wenn der Vergleich kleiner/gleich ist wird nach links verzweigt, bei größer als nach rechts. Ein Beispiel an Nachnamen: Der Name Müller muß eingefügt werden. Das ist der Suchname "MUELLER"
Code:
                     SCHMIDT

       BRAMLAGE                    VOGEL

   ABEL        NOETZEL     SCHULZE     WESSEL

FREI FREI  *MUELLER FREI  FREI FREI   FREI FREI
Und nun wird der Reihe nach durchlaufen.
MUELLER ist kleiner als SCHMIDT, also nach links
MUELLER ist größer als BRAMLAGE, also nach rechts
MUELLER ist kleiner als NOETZEL, also nach links
So steht die neue Position für *MUELLER fest. Wenn der Vergleich "gleich" ausgeht, wird auch nach links verzweigt. Beim verzweigen ist darauf zu achten, daß die Positionsnummer immer höher wird. Ist sie mal kleiner, liegt ein Fehler im Index vor und es könnte zur Endlosschleife kommen. Beim Suchen ist dann nur darauf zu achten, daß bei Gleichheit in beide Richtungen weiter gesucht werden muß. In dem Moment legt man die Position nach rechts auf einen Stapel während nach links weiter gesucht wird.
Befehle für den Festplattenzugriff: AssignFile, CloseFile, Read, Write, Seek, FilePos
Variable: FDat : File Of TAdresse; FIdx : File Of TAdrIdx
Vorschlag für das Objekt: TBtree - Add, Del, LookFor

Einen fertigen Quellcode möchte ich bewußt nicht geben, tüftel mal.
Wenn du nicht weiter kommst, frage noch einmal nach.

Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz