![]() |
Re: Datei einlesen - Milchalarm
Zitat:
Delphi-Quellcode:
P.S.: Fuer alle anderen die das lesen..ich weiss..ist ohne Try und {$I+ bzw. - }..also kein Kommentar bitte ;-)
procedure TForm1.FormShow(Sender: TObject);
var EF,AF:TEXTFILE; s:String; Options:TkbmMemTableSaveFlags; begin (***************************************************************************) AssignFile(EF,'C:\WORK\XXDAT012005.TXT'); //Deine Eingabedatei reset(EF); Assignfile(AF,'C:\WORK\XX_R1.2005.TXT'); //Kontrolldatei (ist nicht noetig bei Dir) erzeugt die Datei im CSV-Format rewrite(AF); //Datei Neuerstellen Writeln(AF,'PLZ;Ort;bei'); //Header fuer CSV-Kontrolldatei schreiben Screen.cursor:=crhourglass; //Cursor als Sanduhr..damit man was sieht *g* kbmMemTable1.Close; kbmMemTable1.FieldDefs.Clear; //We dont need this line, but it does not hurt either. kbmMemTable1.FieldDefs.Add('PLZ', FtString, 5, False); kbmMemTable1.FieldDefs.Add('ORT',FtString, 30, False); kbmMemTable1.FieldDefs.Add('BEI', FtString, 30, False); with kbmMemTable1.IndexDefs do begin Clear; Add('Index1','PLZ',[]); //Indizies erstellen ..bei Dir evtl die VNR...Index2 bei Dir nicht noetig(?) Add('Index2','ORT',[]); end; kbmMemTable1.CreateTable; //Tabelle erzeugen kbmMemTable1.active:=true; While Not EOF(EF) do begin s:=''; Read(ef,s);readln(ef); With kbmMemTable1 do begin Append; //Datensatz anhaengen Application.Processmessages; FieldByname('PLZ').asstring:=OEM_Ansi(TrimRight(Copy(s,18,5))); FieldByname('ORT').asstring:=OEM_Ansi(TrimRight(Copy(s,106,23))); FieldByname('Bei').asstring:=OEM_Ansi(TrimRight(Copy(s,75,29))); Post;//Datensatz in Datenbank speichern Writeln(AF,OEM_Ansi(Copy(s,18,5))+';'+OEM_Ansi(Copy(s,106,23))+';'+OEM_Ansi(Copy(s,75,29))); //Ausgabe in Kontrolldatei end; end; Closefile(EF); CloseFile(AF); Screen.cursor:=crdefault; //Standardcursor setzen //Datei als DB speichern Options:=[mtfSaveData, mtfSaveCalculated, mtfSaveBlobs, mtfSaveDef]; Options:=Options+[mtfSaveIndexDef]; Options:=Options+[mtfSaveDeltas]; KbmMemTable1.SaveToBinaryFile('C:\WORK\XX2005_1.dat',options); Showmessage('save mem1'); End; |
Re: Datei einlesen - Milchalarm
Liste der Anhänge anzeigen (Anzahl: 1)
der ganze Hintergrund ist der:
Morgens wird gemolken und dann steht bei Gemelk1 für jede Kuh die Zahlen. Gemelk2 ist dann noch 0. Abend steht dann bei Gemelk1 das von Morgens und bei Gemelk2 das vom Abend. Am nächsten Tag wieder wie oben. Das ganze soll nun in eine kleine Datenbank wo so 3 Gemelke von jeder Kuh drinnen stehen und verglichen werden: Gemelk2 kleiner als 20% von Gemelk1 = Nachricht Gemelk1 kleiner als 20% von Gemelk2 vom Vortag = Nachricht. im Anhang nochmal die ganze Datei mit Beschriftung von mir. |
Re: Datei einlesen - Milchalarm
..Wenn Du in die Datenbank noch das Datum aufnimmst und evtl einen Index drauf setzt..kannst Du die Datei prima weiterverarbeiten.
|
Re: Datei einlesen - Milchalarm
Man könnte es auch mit einem CSV-DataSet ( z.B. TJvCSVDataSet) versuchen
|
Re: Datei einlesen - Milchalarm
Zitat:
|
Re: Datei einlesen - Milchalarm
Man könnte die Datei gleich damit öffnen
|
Re: Datei einlesen - Milchalarm
Das Dumme ist, dass es hier kein Trennzeichen gibt, sondern nur feste Feldlängen.
|
Re: Datei einlesen - Milchalarm
Zitat:
[Edit] Ich weiss nicht wie "Fit" der Autor ist..deshalb wuerde ich zur einfachen Read..copy Variante tendieren. [/Edit] P.S.: Deddy war schneller und besser :-D Noch ein Edit... ich habe mal sowas anstatt Kuehe fuer Bullen geschrieben..(Besamungsstation)incl. Anbindung an die Messstation..da hatte ich auch solche Quelldaten und kam mit der Read/Copy Methode gut hin. |
Re: Datei einlesen - Milchalarm
Im Beispiel sind Trennzeichen(Leerzeichen) vorhanden.
|
Re: Datei einlesen - Milchalarm
@Der.Kaktus
der Autor ist nicht so fit *grins* Wie meinst Du das mit der Read/Copy Funktion ? lg, markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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