Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Datei bearbeiten und nur Teile wieder speichern

  Alt 29. Feb 2008, 09:34
Wie ließt du denn die Datei ein? Also wenn du sie zeilenweise mit Readln einließt sollte das eig. kein Problem sein:

Du ließt alles bis zu der Zeile nach <root> ein:

(is jetzt n bisschen primitiver code)

Delphi-Quellcode:

assignfile(textfile1,filename1); //textfile1 aus dem gelesen werden soll
reset(textfile1);

assignfile(textfile2,filename2); //textfile2 in das geschrieben werden soll
rewrite(textfile2);

a:='';
while (not a='<root>') or (not eof(textfile1)) do
begin
  readln(textfile1,a);
  writeln(textfile2,a);
end;

a:='';
while (not a='Element3') or (not eof(textfile1)) do
  readln(textfile1,a);

a:='';
while (not eof(textfile1)) do
begin
  readln(textfile1,a);
  writeln(textfile2,a);
end;

closefile(textfile1);
closefile(textfile2);
Das ganze könnte man dann in eine procedure schreiben, z.B.

Delphi-Quellcode:

procedure CopyLines(FromFile,ToFile:textfile;
                    TerminateString:String;
                    seekonly:boolean);
var a:string;
begin

a:='';
while (TerminateString='or (not a=TerminateString)) or (not eof(textfile1)) do
begin
  readln(textfile1,a);
  if not seekonly then writeln(textfile2,a);
end;


end;
Mit der Procedur würde dein Programm dann so aussehen:

Delphi-Quellcode:
assignfile(textfile1,filename1); //textfile1 aus dem gelesen werden soll
reset(textfile1);
assignfile(textfile2,filename2); //textfile2 in das geschrieben werden soll
rewrite(textfile2);

CopyLines(textfile1,textfile2,'<root>',false);
CopyLines(textfile1,textfile2,'Eingabe3',true);
CopyLines(textfile1,textfile2,'',false);
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat