Hallo an ALLE!
Der Inhalt mehrerer Memos soll zwischen Semikolons in einer *.csv gespeichert werden.
Wenn aber in einem Memofeld ein Absatz gemacht wird, wird dieser Absatz auch in der *.csv gespeichert - und das geht natürlich nicht, weil ja sonst meine Stuktur der Datei kaputt geht und ich so den Inhalt nicht mehr in eine
db einlesen kann.
Also dachte ich mir, ich zähle die Semikolons und zwischen zwei Semikolons werden die Absätze rausgenommen, bevor die nächsten Daten in die Datei geschrieben werden. Die einzelnen Programmteile für sich funktionieren, nur wenn ich alles zusammenfüge, läuft es nicht - und ich sehe nicht, warum. Wahrscheinlich gibt es auch eine einfachere Lösung und meine ganze Struktur ist generell falsch.
Vielleicht kann mir ja jemand helfen...
Viele Grüsse, moperswings
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
f: textfile;
wert_memo: string;
filename: string;
i: integer;
semikolon: integer;
absatz: TStringlist;
begin
filename := 'datensatz.csv';
assignfile(f, filename);
{i-}
append(f);
{i+}
if IOResult <> 0 then begin
showmessage('Fehler!');
exit;
end;
wert_memo := memo1.Text;
writeln(f,';' + memo1.text + ';' );
closefile(f);
// Datei wird geöffnet um die Absätze zu überprüfen
filename := 'datensatz.csv';
assignfile(f, filename);
reset(f);
// Semikolon zählen
semikolon := 1;
for i:=1 to length(filename)
do begin
if filename[i] in [';'] then begin
//Absätze rausnehmen
absatz := tstringlist.create;
absatz.LoadFromFile('datensatz.csv');
absatz.Text := stringreplace (absatz.Text,#13#10,'',[rfreplaceall]);
absatz.SaveToFile('datensatz.csv');
semikolon := semikolon + 1;
end;
// Semikolons sind gezählt
if semikolon = 2 then begin
// Mit Label wird getestet
label1.caption := inttostr(semikolon);
end;
end;
closefile(f);
end;