HI und erstmal herzlich Willkommen in der
DP
Dateien, die mehrere Datensätze über ein Zeichen trennen sind unter dem Namen
CSV (Character Seperated File) bekannt. Such einfach mal in der
DP nach
csv.
Im Prinzip hat mkinzler schon alles wichtige Gesagt, du kannst mit der Methode LoadFromFile von der Klasse TStrings eine Datei laden. TStrings kannst du dabei nicht direkt instanziieren (solltest es jedenfalls nicht tun), da diese Klasse abstrakt ist. Du musst einfach nur einen der Nachfahren verwenden (TStringsList oder THashedStringList).
Beim Laden solltest du darauf achten, dass du einen absoluten Pfad angibst (relative Pfade beziehen sich immer auf das aktuelle Arbeitsverzeichnis, das wechseln kann, was aber ein anderes Thema ist). Am saubersten ist es, sich den absoluten Pfad zur Laufzeit zu generieren. Dazu kannst du einfach den ParamStr(0) verwenden, hier findest du den kompletten Pfad zu deiner Anwendung (Verzeichnis + Name der Exe). Extrahierst du hier den Pfad hast du zwar etwas absolutes, da es aber erst zur Laufzeit erzeugt wird ist dieser auf jedem System gültig. Alles hinter diesem Pfad kann dann relativ sein.
Auf die einzelnen Zeilen kannst du in einem TStrings Objekt direkt wie bei einem Array zugreifen. So kommst du schonmal an alle Zeilen, die gespeichert wurden.
Delphi-Quellcode:
var strings : TStrings;
path : String;
i : Integer;
begin
strings := TStringList.Create;
try
// hier den absoluten Pfad zur Exe ermitteln (der Name der Exe wird "abgeschnitten"
path := ExtractFilePath(ParamStr(0));
// einen relativen Pfad (von dem Ordner in dem die Exe liegt)
// und den Dateinamen ergänzen
path := path + 'DeineDatei.xyz';
// Laden der Datei
strings.LoadFromFile(path);
if strings.Count > 0 then
begin
// alle Zeilen auslesen und weiterverarbeiten
for i := 0 to strings.Count - 1 do
begin
// doFoo ist dann die Methode, die den String weiterverarbeitet
doFoo(strings[i]);
end; // for i := 0 to strings.Count - 1
end; // if strings.Count > 0
finally
strings.Free;
end;
Ja, statt doFoo solltest du natürlich eine sinnvolle Funktion verwenden. Der Rest ist dann das zerlegen des Strings anhand der Komma (oder eines Trennzeichens), da wirst du in der Codelib sicherlich eine explode-Funktion finden bzw. einen StringTokenizer oder wie man die sonst so nennt.
An sich hier aber auch die Bitte, wenn du schon etwas versucht hast und nicht weiter kommst, dann sag doch einfach mal was genau du gemacht hast und was passiert ist. Das hilft dann den Leuten, die dir helfen wollen. Vielleicht bist du ja schon auf dem total richtigen Weg und hast nur einen kleinen Fehler drin. Man kann es dir einfach leichter erklären und man sieht auch, dass du dich bemühst (meine nicht, dass es hier nicht so rüber kam!).
Wenn also etwas noch nicht für die Umsetzung reicht, einfach mal sagen was du schon hast und wie du dir das denkst.
Gruß Der Unwissende