Entwickler-Ecke
Datenbanken - index dateien
z1dirk - Di 02.09.03 23:51
Titel: index dateien
Ich muss meine datenbank mit index dateien ausstatten, doch nichts hat bisher funktioniert. Kann mir irgendwer dazu was sagen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type Tartikel = record alter:string[35]; name:string[35]; genre:string[35]; Ersch:string[35]; reg:string[35]; dar:string[35]; FSK:string[35]; wer:string[35]; wann:string[35]; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure Tform1.sortierenname; var datei: file of Tartikel; artikel2,artikel1:tartikel; pos,n,durchl,erg:integer; begin assignfile(datei,'daten.dat'); if fileexists('daten.dat') then begin reset (datei); pos:= filesize(datei)-2; durchl:=4*filesize(datei); repeat for n:=0 to pos do begin seek(datei,n); read(datei,artikel1); seek(datei,n+1); read(datei,artikel2); erg:=AnsiCompareStr(artikel1.name,artikel2.name); if erg < 0 then begin seek(datei,n); write(datei,artikel1); seek(datei,n+1); write(datei,artikel2); end; if erg >= 0 then begin seek(datei,n); write(datei,artikel2); seek(datei,n+1); write(datei,artikel1); end; end; Dec(durchl); until durchl=0; closefile(datei); end; end; |
das ist mein quelltext für eine sortierprocedure, doch die speichert bisher immer in meine daten.dat. soll sie aber nicht ich will nur die richtig sortierte reinfolge und die in eine index datei speichern und mit dieser dann die richtig geordneten daten anzeigen. die daten in daten.dat sollen unsortiert bleiben nur die ausgabe.
bitte helft mir. :cry:
Gruß Dirk.
grayfox - Mi 03.09.03 12:41
hallo z1dirk!
an deinem fall würde ich einen weiteren recordtypen definieren, zb
Delphi-Quelltext
1: 2: 3: 4: 5:
| Type TArtikelIdx = record satzNr: integer; IdxFeld (zb name) end; |
beim anlegen der artikeltabelle legst auch gleich ein indexfile an
zb: ArtikelIdx.dat
vorm öffnen der artikeltabelle immer überprüfen, ob auch die indextabelle existiert und sie gleichzeitig öffnen. nach dem schliessen auch aufs index-schliessen nicht vergessen.
beim erfassen, ändern, löschen von datensätzen dies in der indextabelle mitberücksichtigen
der zugriff auf den index ist am schnellsten, wenn er im speicher liegt --> daher in ein array einlesen und dort auch sortieren. da nur einzelne werte in eine bereits sortierte liste eingetragen werden sollen, lässt sich das mit dem insertion-sort ganz flott bewerkstelligen.
somit kannst du auf die eintragnr der einträge zugreifen und anhand dieser eintragnr mit SEEK den betreffenden datensatz wählen.
naja, auf alle fälle eine menge arbeit, aber nicht uninteressant ;)
mfg, stefan
z1dirk - Mi 03.09.03 17:48
hi, was meinst du mit "insertion-sort" , kannst du das mir mal erklären.(befehl oder so) :D
Dirk
z1dirk - Do 04.09.03 16:20
danke :( , die sortierprocedure ist nicht schlecht, doch kannst du mir vieleicht sagen wie ich im stringgrid sortieren kann, in dem ich auf meine
Celle[0,1] (die grauen Kästchen oben) oder so drücke. Da steht dann Name und datum und etc. und danach soll sortiert werden. ich möchte keine Button über die zeilen packen, dass sieht nicht so gut aus. 8)
Gruß dirk :beer:
nimm das smilie nach dem danke nicht persönlich, hab mich nur verklickt.
so soll es sein :evil: war nur ein scherz :shock: ich meine natürlich so: :D
Moderiert von
UGrohne: Beiträge zusammengefügt
grayfox - Do 04.09.03 21:57
hallo z1dirk!
es gibt auch eine edit-funktion der eigenen beiträge! :wink:
wie du feststellen kannst, dass auf die überschrift der spalte 1 geklickt wurde? so zb
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.DruckGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var aCol,aRow: LongInt; begin DruckGrid.MouseToCell(X,Y,aCol,aRow); if (aCol=1) and (aRow=0) then ShowMessage('sortieren wird gestartet ... '); end; |
mfg, stefan
ps: tu dir nix an wegen des smileys :lol:
z1dirk - Fr 05.09.03 19:44
Hey danke. starke sache. du hast echt was drauf. :wink:
dirk :beer:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!