Datei indizieren

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Tillman
Beiträge: 6
Registriert: Sa 4. Aug 2007, 18:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schwedt/Oder

Datei indizieren

Beitrag von Tillman »

Hallo,
noch bin ich, wie Ihr sehen könnt, bei Euch der letzte Neue.

Kurzvorstellung - ich habe ehemals in TurboPascal Dos-Anwendungen (Hobby) geschrieben.
Lang ist es her.
Ich bin auf der Suche nach einem geeigneten Programmierwerkzeug, mit dem ich mir eine Datenbankverwaltung erstellen kann, um viele Daten zu verwalten.
Ein fertige Datenbankverwaltung kommt nicht in Frage, da die Struktur offen bleiben muss.
Als BS nutze ich Windows XP.

Aus den Beispielen lud ich mir das adress_book.
Dort stellte ich fest, dass eine Reindizierung fehlt.
Weiter gesucht - Nichts gefunden.

Mir gefällt "learning by doing" - so habe ich bisher jede Programmiersprache gelernt.
Anfängliche Hinweise auf Lauf/Denkrichtungen können aber sehr hilfreich sein.

Ich vermute, dass tiefer in den Units schon Denkansätze existieren müßten.
Wo aber suchen?

Mit Sicherheit,
wenn es mich hier hält, will ich nicht nur Fragen stellen!

Vielen Dank.

Diesen Thread vllt. in 'Datenbanken' verschieben?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Was verstehst du denn unter reindizierung ?
In allen Datenbanksystemen werden die indizien automatisch aktualisiert wenn ein Datensatz eingefügt wird.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich würde einfach ein Fertig Daten Bank System verwenden. Die sind dafür ausgelegt mit vielen Daten zu arbeiten. z.b. SQL-Lite oder MySql oder so.
Die sind auch alle soweit ich weiß offen. und du kannst das Format der Daten Bank ja offen legen. Also welche Tabellen du verwendest und wie sie aufgebaut sind.
MFG
Michael Springwald

Tillman
Beiträge: 6
Registriert: Sa 4. Aug 2007, 18:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schwedt/Oder

Beitrag von Tillman »

@Christian
wenn ich Rohdaten aus einer anderen Anwendung übernehmen muß, deren
Index aber nicht nutzen kann, muß ich den Index neu aufbauen.
(z.B. Textfile, Trennzeichen Kommata)

Es kann auch mal passieren, dass eine Indexdatei zerstört wird, weil das Programm unterbrochen wird, bevor zum neuen/geänderten Datensatz der Index angepaßt werden konnte.

Reindizieren ist insofern ein "Abfallprodukt" jedes Datenbanksystems.

Nur weiß ich noch nicht, wie ich es hier bewußt aufrufen kann.

@pluto
Es kann passieren, dass Teile von MySQL-Datenbanken bei mir in das Gesamtkonzept einfließen werden.
Im Moment aber steht einfach die Frage anders.

Wie baue ich bewußt den Index einer Datei (wieder) auf?
Vielen Dank für euer Mitdenken.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Was willst du denn mit Textdateien ?
Erzähl doch erstmal was für ein Datenbanksystem du einsetzen willst.
Im Moment macht deine Frage keinen Sinn.
Und mann kann bei Serverbasierten DBS nicht von der Anwendung heraus reindizieren. Das ist jedoch auch nie nötig da sich darum der Datenbankserver kümmert.
Bei Tdbf z.b. geht das mit nem einzigen Funktionsaufruf ist aber auch nie nötig da die Indizien wie schon gesagt automatisch aktualisiert werden. Und das funktioniert.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich denke man müsste eine Datenbank bevor sie geändert wird sichern. und dann wieder zurück sichern, wenn die Änderung erfolgt reich war.

Die Frage ist wie ist dein Format aufgebaut ?
Ich würde jeden Eine eindeutige ID geben. Ich glaube der Index ist gar nicht mal so wichtig..... sondern wie das Format halt aussieht.... es hier entscheiden.

z.b. könntest du eine Tabelle haben mit Root Einträgen. Von dieser Tabelle gehen dann wieder zweige in anderen Tabellen. In ein Projekt was ich gerade vorbereite habe ich das so gelöst:

1. Es gibt eine Root-Tabelle diese Tabelle wird beim Laden zu erst geladen.
beim Laden wird geschaut gibt es zu dieser Tabelle. bzw. jeder Eintrag hat eine eindeutige ID die 10 Stellig ist.Gibt es ein Submenu dann mache ein + in der VST komponente

2. Hat ein Eintrag ein + Zeichen und es wird drauf geklickt wird einfach das submenu nach geladen beim entladen sollte es wieder freigeben werden.

3. Eine Änderung wird sofort übernommen.
4, Der Vorteil dieses Konzeptes ist, das ich einfach nachladen kann.
In meinem Fertigen Projekt nutze ich die Lade und Speicher Funktion der VST. und ich habe mir die Sorucen angesehen und ich glaube das beim Laden alles komplett geladen wird und beim speichern auch.
Noch ist es egal, aber die Datenbank wechst ja mit der Zeit. Und Irgendwann in ein paar Jahren evlt. wird das laden und speicher einfach zu lange dauern.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto ich denke hier gings um Datenbanken und nicht irgend wein dummes Dateiformat.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ist mir schon klar. Ich verwende es ja auch in einer Daten Bank.
Genau so. in einer SQL-Lite Datenbank.
MFG
Michael Springwald

Tillman
Beiträge: 6
Registriert: Sa 4. Aug 2007, 18:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schwedt/Oder

Beitrag von Tillman »

@all
ich werde in mich gehen und mit der Lösung winken.
Dann erklärt sich das Ding ganz von selbst.

Ich habe noch keinen Server zur Verfügung.
Wir arbeiten p2p unter Windows XP.

Ich denke, eine MDX-Datei ist die zugehörige Indexdatei zu einer DBF-Datei (unter FreePascal) richtig?

@Christian
die Textdatei war nur ein Beispiel.....
(Excel Daten kann man zum Beispiel dorthin exportieren, getrennt durch Komma oder Semikolon)

Frage ich anders...
Wie kann ich unter FreePascal eine fremde Datei satzweise in eine noch leere Datei importieren?
Zwangsläufig baut sich der Index mit auf.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Wenn du das Format kennst mit TFileStream oder blockread oder so ähnlich.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto hör doch ma auf unsinn zu quatschen.

Er benutzt TDbf, das ist nun mal klar.

Wie kann ich unter FreePascal eine fremde Datei satzweise in eine noch leere Datei importieren?
Zwangsläufig baut sich der Index mit auf.


kommt natürlich auf das format deiner Fremden datei an aber prinzipiell so:

Dbf1.Insert;
Dbf1.FieldByName('FELD1').AsString := 'Feld1 aus meiner fremden datei';
Dbf1.FieldByName('FELD2').AsString := 'Feld2 aus meiner fremden datei';
Dbf1.FieldByName('FELD3').AsString := 'Feld3 aus meiner fremden datei';
Dbf1.Post;

Das ganze wiederholst du für jeden Satz in deiner fremden datei.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Tillman
Beiträge: 6
Registriert: Sa 4. Aug 2007, 18:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Schwedt/Oder

Beitrag von Tillman »

@Christian
danke, das liest sich gut.
Werde ich ausprobieren.

Antworten