![]() |
Datei einlesen - Milchalarm
Hallo.
für einen Freund möchte ich ein Milchalarm Programm schreiben. Die Daten von der Melkanlage liegen als File vor. Wie kann ich eine Text-Datei öffnen und zb. in Zeile 8 gehen und die Position (Cursorposition) 5,6,7 auslesen ? schon mal vielen Dank, Markus |
Re: Datei einlesen - Milchalarm
Hallo,
eine Datei kannst Du z.B. in eine StringList einlesen.
Delphi-Quellcode:
Wenn Du die Buchstaben 5-7 brauchst,
sl := TStringList.create;
sl.loadFromFile; s:=sl[7]; die 8. Zeile b5:=s[5]; der 5. Buchstabe ... sl.free; kannst Du sie mit der Funktion copy() (siehe Delphi Hilfe) herauskopieren. Grüße Klaus |
Re: Datei einlesen - Milchalarm
Hat die Datei ein bestimmtes Format (CSV; Trennung mit Komma, Stringpunkt, Tab, ...)?
|
Re: Datei einlesen - Milchalarm
Liste der Anhänge anzeigen (Anzahl: 1)
Die hat folgendes Format:
VN000000 15767 120081012 223 210 usw... VN000000 22197 220071224 183 198 usw... Aufgeschlüsselt ist das Format: unbekannt Kuhnr. Transponder unbekannt Gemelk1 Gemelk2 usw. VN000000 1 5767 120081012 223 210 VN000000 2 2197 220071224 183 198 usw. lg, markus edit: im Anhang 1ne Datei mit 3 Datensätzen. |
Re: Datei einlesen - Milchalarm
Könnte man ja auch eine CSV-DataSet verwenden oder halt ein 2 geschachtelte StringListen mit entsprechenden Delimiter oder Explode()
|
Re: Datei einlesen - Milchalarm
Hab mal eine Datei mit angehängt.
lg, markus |
Re: Datei einlesen - Milchalarm
Hallo,
wenn ich die Struktur so sehe, ist sie doch eindeutig und leicht in eine Datenbank, zum besseren bearbeiten/auswerten, zu implementieren. Nimm einfach eine einfache Datenbank(kbmMemtable z.B.) erzeuge eine Datenbankstruktur..(Vnr....KuhNr. ..usw.) und konvertiere (einfache Variante) z.B.
Delphi-Quellcode:
etc. jeden Datensatz.
KB1.VNr:=copy(1,8,vnr);
|
Re: Datei einlesen - Milchalarm
Da das so aussieht, als ob die Sätze feste Längen haben, gebe ich Kaki vollinhaltlich Recht, das müsste recht einfach zu parsen sein.
|
Re: Datei einlesen - Milchalarm
hört sich gut an, nur wie mache ich es ?
lg, markus |
Re: Datei einlesen - Milchalarm
Das Einfachste dürfte ein Record oder eine Klasse sein, die die zu füllenden Felder beinhaltet. Durch den Einsatz von Copy kannst Du diese dann der Reihe nach befüllen. Ich bin gerade unter Linux unterwegs, aber ich könnte das ja mal schnell mit Lazarus probieren.
[edit] So, hier mal eine "Schmalspurversion" mit einer ListView (vsReport):
Delphi-Quellcode:
[/edit]
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList; i: integer; s: string; Item: TListItem; begin sl := TStringList.Create; try sl.LoadFromFile(Dateiname); for i := 0 to sl.Count - 1 do begin if Length(sl[i]) < 3 then break; s := sl[i]; Delete(s,1,8); //die ersten 8 Stellen werden nicht benutzt Item := ListView1.Items.Add; Item.Caption := Copy(s,1,4); //Kuh-Nr. (Stelle 1 bis 4) Item.SubItems.Add(Copy(s,5,4));//Transponder (Stelle 5 bis 8) end; finally sl.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz