Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
Delphi 2007 Architect
|
Re: Textdatei Zeichen in bestimmter Zeile löschen
27. Apr 2006, 10:52
Ich will das Ganze File nicht in einen String laden, da stehen ca. 250.000 Datensätze drinnen und das werden ständig mehr. (Einzelpespräche von Telefon Kunden).
So erstelle ich das Ding.
Delphi-Quellcode:
procedure tuser.ImportFileEinlesen;
var
x,y,flag,counter:integer;
Anlagennummer,Dataline,Zone,O1Calldate,O1Destnumber,O1Destdesciption,O1CallStartTime:string;
O1CallDuration,O1Callprice,Importfilename,GZFZ:string;
DurationStringHHHH,DurationStringMM,DurationStringSS,DurationStringSumme:String;
CallStartHH,CallStartMM,CallStartSS,CallDateDD,CallDateMM,CallDateYY:string;
DurationIntHHHH,DurationIntMM,DurationIntSS:integer;
Duration,Summe,Unitpreis,DurationIntSumme:Double;
CallStartTime,FreizeitAnfang,FreizeitEnde,GeschaeftszeitAnfang,GeschaeftszeitEnde:TTime;
aFile:TextFile;
begin
AssignFile(aFile,ExtractFilePath(Application.ExeName)+'\Dumpfile\dumpfile.sql');
Rewrite(aFile);
Writeln(aFile,DumpHeader.Text);
Writeln(aFile,'LOCK TABLES callstemp WRITE;');
Writeln(aFile,'INSERT INTO callstemp VALUES ') ;
counter:=0;
for x := 0 to fimoprtStringlist.Count-1 do
begin
inc(counter);
fmMain.Gauge1.MaxValue:=fimoprtStringlist.Count;
fmMain.Gauge1.Progress:=x;
application.ProcessMessages;
..
//Berechnung der Datenfelder (ca 4 Seiten Code. den hab ich mal nicht gepostet)
..
if (counter < 100) then
begin
writeln(aFile,'(null,"'+Anlagennummer+'","'+Zone+'","'+O1Destdesciption+'","'+FormatDateTime('YYYY-MM-DD',StrToDate(CallDateDD+'.'+CallDateMM+'.'+CallDateYY))+'","'+O1Destnumber+'","'+TimeToStr(CallStartTime)+'","'+BeistrichAufPunkt(FloatToStr(DurationIntSumme))+'","'+BeistrichAufPunkt(FloatToStr(Summe))+'","'+GZFZ+'"),');
end
else
begin
counter:=0;
writeln(aFile,'(null,"'+Anlagennummer+'","'+Zone+'","'+O1Destdesciption+'","'+FormatDateTime('YYYY-MM-DD',StrToDate(CallDateDD+'.'+CallDateMM+'.'+CallDateYY))+'","'+O1Destnumber+'","'+TimeToStr(CallStartTime)+'","'+BeistrichAufPunkt(FloatToStr(DurationIntSumme))+'","'+BeistrichAufPunkt(FloatToStr(Summe))+'","'+GZFZ+'");');
writeln(aFile,'INSERT INTO callstemp VALUES ') ;
end;
end;
Das Problem ist das das Importfile, welches ich auf fimoprtStringlist lade , hat nicht in jeder Zeile einen Datensatz, sonst könnte ich ja den fimoprtStringlist.count -2 benutzen.
Sieht ca so aus das File welches ich importiere
Code:
A1Priority Telecom GmbH Erdbergstraße 52-60 A-1030 Wien
A20800 252 290 000000000 [email]businessinfo@priority.at[/email]
A32015100696920222PRIORITY TELECOM GMBH
B1ÖLREINIGUNG GMBH
B2AUGASSE 13 70211 SIGENDORF
B3
B48040187200
B58040187200 8040187200
B6
B7OESTERR.POSTSPARK. 6000000075659723
C18104512011029662720051104200511182005100120051031N2000000COY
D100000000000+00000000000+00000000000+00000000000+
F10268720300 BKF Wholesale 710000139140000000209+0000000000+0000000000+0000000209+
I1Zahlung für Kaution 0000036336+
I1Anpassung Kaution 0000036336-
I1Übertrag auf Hauptkto. 8104406-01/10000036336+
I1Übertrag auf Hauptkto. 8104406-01/10000000209-
J10000000000+00200000000000+0000000000+
K10268720300 BKF Wholesale
N1on-Net
O10510051947 1960 Priority Telecom 08184800000121 0000000000+
O11710001945 4800 Priority Telecom 11343200000018 0000000000+
O117100501945 4800 Priority Telecom 11352500000108 0000000000+
O12510050967 6937 Priority Telecom 11025600000005 0000000000+
O12510050967 6937 Priority Telecom 11095100000529 0000000000+
P1GESCHÄFTSZ00000500000821000000000000000+
N1Inland
O101100501 6162997 Wien 12465700000037 0000000001+
O103100501 313263366 Wien 13570900000027 0000000001+
O110100501 601223560 Wien
..
..
Auf Grund der Variablen am Satzanfang werte ich die Zeilen aus.
lg
Bundy
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
|