Hallo zusammen.
Ich bin das erste Mal hier, und hoffe, da ich schon so viel gutes über dieses Forum gehört habe, dass ihr mir helfen könnt.
Ich habe ein Programm in Pascal geschrieben, das in Unterverzeichnissen und deren Dateien nach bestimmten vierstelligen Zahlencodes sucht, und dann definierte Abschnitte dieser Dateien in eine andere Datei kopiert.
Soviel zur Theorie.
Leider kopiert das Programm alles doppelt in die neue Datei.
Ein Beispiel:
Ich suche nach den Codes 0123 4567 8901.
Dann ist die kopierte Reihenfolge in der neuen Datei:
0123 4567 8901 0123 4567 8910
Und ich hab keine Ahnung wieso.
Bitte helft mir, es ist wirklich dringend!
Danke schonmal im Voraus, Melanie
Der Quellcode:
program suchen;
uses crt,sysutils;
const n=‚aufgabe.tex‘;
var a:text;
{Auslesen der Dateien und schreiben in neue Datei}
procedure lesen(d:string);
var f:text;
c,s:string;
b:boolean;
begin
b:=false;
assignfile(f,d);
{$i-} reset(f);
if ioresult=0 then
begin
while not eof(f) do
begin
readln(f,c);
while length©>0 do
begin
if pos(#10,c)>0
then
begin
s:=copy(c,1,pos(#10,c));
delete(c,1,pos(#10,c));
end
else
begin
s:=copy(c,1,length©);
delete(c,1,length©);
end;
if length(s)>0 then
begin
if (b) and (pos(’\end{hmaufgabe}’,s)=0) then writeln(a,s);
if (((not b) and (pos(paramstr(1),s)>0))
OR ((not b) and (pos(paramstr(2),s)>0))
OR ((not b) and (pos(paramstr(3),s)>0))
OR ((not b) and (pos(paramstr(4),s)>0))
OR ((not b) and (pos(paramstr(5),s)>0))) then
begin
b:=true;
writeln(a,’\item’);
end;
if (pos(’\end{hmaufgabe}’,s)>0) then b:=false;
end;
end;
end;
closefile(f); {$i+}
end;
end;
{Suchen der Labels}
procedure suche(s,t:string);
var r :integer;
p :tsearchrec;
begin
r:=findfirst(s+t,faanyfile,p);
while (r=0) do
begin
if ((p.attr32) and
(p.name[1]’.’)) then suche(s+p.name+’/’,t)
else
begin
if (p.name[1]’.’) and
(extractfileext(p.name)=’.tex’) then lesen(s+p.name);
end;
r:=findnext§;
end;
findclose§;
end;
{Header-Datei kopieren}
procedure dateikopie;
var lesen:string;
var quelle,ziel:text;
const quelldat=‚header.tex‘;
const zieldat=‚aufgabe.tex‘;
begin
assign(quelle,quelldat);
assign(ziel,zieldat);
reset(quelle);
rewrite(ziel);
while not eof(quelle) do begin
readln(quelle,lesen);
writeln(ziel,lesen);
end;
close(quelle);
close(ziel);
end;
{Hauptprogramm}
begin
clrscr;
if paramstr(1)’’ then
begin
dateikopie;
writeln(’> Header-Datei kopiert …’);
assign(a,n);
append(a);
suche(’./’,’*.*’);
writeln(’> Suche im aktuellen Verzeichnis …’);
writeln(’> Elemente werden in „aufgabe.tex“ gespeichert…’);
writeln(a,’\end{enumerate}’);
writeln(a,’\end{document}’);
close(a);
end
else writeln(’> Kein Parameter angegeben!’);
writeln(’> Ende’);
writeln;
end.