![]() |
Re: Textdatei als Datenbank nutzen
Hallo Robert,
es spricht absolut nicht dagegen mit Records zu arbeiten. Man kann ja eine Klasse schreiben, die einige nützliche Funktionen auf diesen Records kapselt. Wenn du mit Datenbanken arbeitest, bekommst du ja die Daten auch in einer Datenmenge, die keine Klasse ist, sondern du musst die Daten erst noch verarbeiten, bis du sie weiterverwenden kannst. Eine Erweiterung ist auch kein großes Problem. Ein Konvertieren der Daten sollte bei kleinen Änderungen in wenigen Minuten programmiert sein. Natürlich halte ich Datenbanken für besser geeignet, aber typisierte Dateien sind aus meiner Sicht keine schlechte Lösung, wenn man keine DBs will. |
AW: Textdatei als Datenbank nutzen
Hallo,
ich hänge mich einfach mal an diesen alten Post ran, da es bei mir um was ähnliches geht. Ich bin ein Delphi Anfänger. Nun wollte ich ein Programm schreiben, in welchem eine Art Rezept erstellt wird. Es gibt bestimmte Zutaten mit verschiedenen eigenschaften. zB.: Eier : 100% Protein, xx% Fett usw... Diese Daten würde ich gerne in einer .txt Datei oder so ähnlich gespeichert haben. In dem Programm stehen die verschiedenen möglichen Zutaten und man muss dort die Menge eingeben. Wenn man das für alle Zutaten gemacht hat klickt man auf einen button und bekommt eine Ausgabe mit dem gesamt Proteingehalt, gesamt Fettgehalt usw. das ist der Grundgedanke. Nunweiß ich jedoch nicht, wie ich diese txt Datei (oder ähnliches) in das programm einbinde etc. Kann mir da evtl jemand behilflich sein? Grüße Ulf |
AW: Textdatei als Datenbank nutzen
Das Dateiformat wird in der Regel CSV sein. Entgegen des Namens benutzt man meistens Semikolons zur Trennung. Auch Excel tut das.
Hier ein paar sehr einfache Funktionen aus meinen Projekten, mit Sicherheit verbesserungsfähig aber sie sollten dir helfen. Einen Typ für ein dynamisches zweidimensionales Array erstellen, macht Zuweisungen einfach:
Delphi-Quellcode:
Eine Funktion zum Auslesen der CSV-Daten einer TStringList (Fields = Anzahl der Spalten).
type TString2D = array of array of string;
Database: TStrings2D;
Delphi-Quellcode:
Anschließend kann man auf die Strings zugreifen:
procedure InitDatabase();
function CSVToArray(Input: TStrings; Fields: Integer): TString2D; var i, j, k, l: Integer; s: string; begin i := Input.Count; SetLength(Result, i); j := 0; repeat s := Input.Strings[0]; l := 0; SetLength(Result[j], Fields); for k := 1 to Length(s) do if s[k] = ';' then inc(l) else Result[j][l] := Result[j][l] + s[k]; inc(j); Input.Delete(0); dec(i); if i = 1 then s := ''; until i = 0; end; var sl: TStringList; begin sl := TStringList.Create; try sl.LoadFromFile('database.csv'); Database := CSVToArray(sl, 42); // 42 ändern zur Anzahl der maximal genutzten Spalten finally sl.Free; end; end;
Delphi-Quellcode:
(erste Spalte des zweiten Datensatzes)
Database[1][0]
Wichtig ist, dass es zunächst mal alles Strings sind, man sie also ggf. in Zahlen umwandeln muss, um damit zu rechnen. Die Funktion unterstützt keine Quantifiers, sprich du solltest keine Semikolons in deinen Einträgen verwenden. |
AW: Textdatei als Datenbank nutzen
Man könnte auch ein CSVDataSet verwenden oder noch besser ein (embedded) DBMS.
|
AW: Textdatei als Datenbank nutzen
FdMemTable ?
|
AW: Textdatei als Datenbank nutzen
Zitat:
Soll direkt auf die Textdatei zugegriffen werden, wären Datensätze mit fixer Satzlänge meine erste Wahl. Willst Du eine interne Struktur (z.B. TList) mit Daten füllen, ist CSV keine schlechte Wahl. Was das Einbinden angeht, kommt es auf die konkreten Anforderungen an. Gruß K-H |
AW: Textdatei als Datenbank nutzen
Zitat:
Zitat:
Für komplexere Anwendungsfälle zum Speichern gerne ein DBMS. CSV wird aber auch extrem gerne als Datenaustauschformat verwendet, z.B. für Schnittstellen oder Migrationen. |
AW: Textdatei als Datenbank nutzen
Moin...:P
Zitat:
Zitat:
Meine Daumenregel: TXT/CSV/XML als Datenaustauschformat ist in Ordnung wenn die Daten nur readonly sind. Alles Andere gehört in ein DBMS. :thumb: Wie es die Andreren schon bemerkten: Zitat:
Zitat:
Empfehlung für ein DBMS: Firebird: ![]() ![]() Firebird Vorteile: * minimaler Installationsaufwand (ca. 10 Minuten) * Ein Datenbankfile. * Das Datenbankfile kann man z.b. auf einen USB Stick kopieren und wieder zurück. * Wechsel zwischen Multiuser und Einzelplatz ohne Aufwand möglich. Datenzugriff * Zeos: ![]() * Tutorial: ![]() Admin Tool * IBExpert Personal: ![]() Datenbank Tutorial * ! es geht nur ums Prinzip. :wink: ![]() Zitat:
Stichworte: ![]() ![]() ..jetzt hast du mal Brot. :thumb: |
AW: Textdatei als Datenbank nutzen
@haentschman
Ich vermute, er scheut den "Aufwand" für eine DB, und leider hast Du die notwendigen Komponenten für den DB-Zugriff erst ab Prof. an Bord. Da schreckt man schon mal gerne zurück. Gruß K-H P.S. Gerade gesehen, er hat ja die prof Version, da sollte es ja gut gehen. |
AW: Textdatei als Datenbank nutzen
Danke FAlter für den Hinweis mit CommaText und DelimitedText.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 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