Einzelnen Beitrag anzeigen

Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#13

AW: Textdatei als Datenbank nutzen

  Alt 14. Jul 2017, 14:13
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:
type TString2D = array of array of string;
Database: TStrings2D;
Eine Funktion zum Auslesen der CSV-Daten einer TStringList (Fields = Anzahl der Spalten).
Delphi-Quellcode:
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;
Anschließend kann man auf die Strings zugreifen: Database[1][0] (erste Spalte des zweiten Datensatzes)
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.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat