Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datei einlesen - Milchalarm (https://www.delphipraxis.net/126026-datei-einlesen-milchalarm.html)

ljmarkus 16. Dez 2008 15:33


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

Klaus01 16. Dez 2008 15:40

Re: Datei einlesen - Milchalarm
 
Hallo,

eine Datei kannst Du z.B. in eine StringList einlesen.

Delphi-Quellcode:
sl := TStringList.create;
sl.loadFromFile;
s:=sl[7];  die 8. Zeile
b5:=s[5];  der 5. Buchstabe
...
sl.free;
Wenn Du die Buchstaben 5-7 brauchst,
kannst Du sie mit der Funktion copy() (siehe Delphi Hilfe)
herauskopieren.

Grüße
Klaus

mkinzler 16. Dez 2008 15:42

Re: Datei einlesen - Milchalarm
 
Hat die Datei ein bestimmtes Format (CSV; Trennung mit Komma, Stringpunkt, Tab, ...)?

ljmarkus 16. Dez 2008 15:48

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.

mkinzler 16. Dez 2008 15:50

Re: Datei einlesen - Milchalarm
 
Könnte man ja auch eine CSV-DataSet verwenden oder halt ein 2 geschachtelte StringListen mit entsprechenden Delimiter oder Explode()

ljmarkus 16. Dez 2008 16:45

Re: Datei einlesen - Milchalarm
 
Hab mal eine Datei mit angehängt.

lg, markus

Der.Kaktus 16. Dez 2008 16:53

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:
 KB1.VNr:=copy(1,8,vnr);
etc. jeden Datensatz.

DeddyH 16. Dez 2008 16:54

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.

ljmarkus 16. Dez 2008 16:55

Re: Datei einlesen - Milchalarm
 
hört sich gut an, nur wie mache ich es ?


lg, markus

DeddyH 16. Dez 2008 16:59

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:
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;
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.
Seite 1 von 4  1 23     Letzte »    

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