Einzelnen Beitrag anzeigen

Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Datei einlesen - Milchalarm

  Alt 16. Dez 2008, 18:10
Zitat von ljmarkus:
hört sich gut an, nur wie mache ich es ?


lg, markus
Habe mal nen Auszug aus einem aelteren Konvertierungsprogramm hier..benoetigte Unit kbmmemtable...(suche mal bei Google..kleiner Version als 5.6 ist Kostenfrei!!)

Delphi-Quellcode:
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;
P.S.: Fuer alle anderen die das lesen..ich weiss..ist ohne Try und {$I+ bzw. - }..also kein Kommentar bitte
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat