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.