Zitat von
xv300:
Möchtet ihr einem auf dem Schlauch stehenden vöölig überforderten Newbie mal kurz in gaaaaaaanz langsamen Schritten erklären, wo der Fehler liegt und am besten auch noch wie er zu beheben ist?
LiEbE GrÜßE
Ich hab eine Funktion ausgebuddelt die man eventuell für eine
csv-artige Datenbank benutzen könnte. Ich hab die Funktion nicht direkt dafür geschrieben, aber bei einer Handvoll Daten wird es schon gehen.
csv bedeutet, daß du die Daten in einer Textdatei getrennt mit Komma, bzw. Semikolon speicherst. Ich hab soweit auch deine Beispieldatei geändert, d.h Daten im Sem. getrennt.
Das Beispiel ist kurz, erfüllt aber alle Forderungen, d.h. sucht in der
DB und liest den Datensatz ein. Den Rest mußt du selbst machen.
Delphi-Quellcode:
uses
StrUtils;
var
DBTextPath: String;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBTextPath := ExtractFilePath(ParamStr(0)) + 'Datensatz1.csv';
Memo1.Lines.LoadFromFile(DBTextPath);
end;
//Gibt den n'ten Text aus einem mit Trennzeichen getrennten String, zB. A|B|C
//N = 0 für ersten Text
function GetTextN(Text: String; N: Word; Delimiter: Char): String;
var
sl: TStringList;
begin
sl := TStringList.Create;
try
while Trim(Text) <> '' do
begin
if Pos(Delimiter, Text) = 0 then Text := Text + Delimiter;
sl.Add(Trim(Copy(Text, 1, Pos(Delimiter, Text) - 1)));
Delete(Text, 1, Pos(Delimiter, Text) + Length(Delimiter) - 1);
end;
if sl.Count >= (N + 1) then Result := sl[N] else Result := '';
finally
sl.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
D = ';';
var
i: Integer;
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.LoadFromFile(DBTextPath);
for i := 0 to sl.Count - 1 do
begin
if AnsiContainsText(sl[i], Edit1.Text) then
begin
Edit2.Text := GetTextN(sl[i], 0, D);
Edit3.Text := GetTextN(sl[i], 1, D);
Edit4.Text := GetTextN(sl[i], 2, D);
Edit5.Text := GetTextN(sl[i], 3, D);
Edit6.Text := GetTextN(sl[i], 4, D);
Edit7.Text := GetTextN(sl[i], 5, D);
Break;
end;
end;
finally
sl.Free;
end;
end;