procedure TForm1.Kopi(Sender: TObject); var FromFile, ToFile: textfile; s: string; begin if opendialog1.execute then begin AssignFile(FromFile, 'opendialog1.filename); Reset(FromFile); if saveDialog1.execute then begin AssignFile(ToFile,SaveDialog1.Filename); Rewrite(ToFile); while not Eof(FromFile) do begin readln(FromFile,s); if s= 'OP = 5' then begin for i := 1 to 13 do readln; {læser linjerne mellem [] uden at skrive} Wrileln(Tofile,'['); Writeln(Tofile,' coolant = "1"');
Hvis du vil rette samtlige filer, så kig lidt på det her:
procedure TForm1.Button1Click(Sender: TObject); var s : TSearchRec; begin if FindFirst('c:\*.*', faAnyFile, s) = 0 then begin repeat if s.Attr <> faDirectory then begin Kopi(s.Name,'xxxx.tmp'); Erase(s.Name); Rename('xxxx.temp',s.Name); end; until FindNext(s) <> 0; end; end;
procedure TForm1.Button1Click(Sender: TObject); var s : TSearchRec; navn,sti: string; begin sti := 'c:\'; if FindFirst(sti, faAnyFile, s) = 0 then begin repeat if ((s.Attr <> faDirectory) and (s.Name <> '.') and (s.Name <> '..')) then Begin navn := sti+s.Name; Ret(navn); End; until FindNext(s) <> 0; end; end;
Hej Hreiff Jeg kan ikke få din TForm1.Button1Click til at virke det virker som om at findfirst ikke finder nogle filer og derfor springer den direkte til END Tror du at du kan få det til at virke ??
Hej Heriff Nu ser det ud til at du har fat i den lange ende ! MEN Når du sletter linjerne i op5 hå sletter den ikke alle før at den indsætte de nye men den fjerner nogle fra OP6!!! hvorfor mon det ?? kunne man ikke lave det sådan at man kan se den fil man er ved at redigere i og følge med i de ændringer der bliver lavet ???
Hej Hreiff Nu ser det ud til at virke !!! Jeg prøver lige at lege lidt med det så kan det være at jeg vender tilbage med et par tillægsspg. Her er dine point dem har du også arbejdet meget for at få, Tak for hjælpen
Du kan f.eks lægge stien i en editbox, og sætte sti := edit1.text; i button1 i stedet for sti := 'c:\'; så du kan taste en vilkårligt sti ind, eller du kan lave noget med en opendialog.
og du kan som sagt lave en ret fil Yes/no dialog:
if messageDlg('ret '+fil+' ?', mtInformation, [mbYes,mbNo], 0) = mrYes then begin MyList.strings[Indx+2] := ' coolant = "4"'; osv. MyList.savetofile(fil); end;
Hej Hreiff Nu har jeg prøvet programmet af og det virker helt fint men der er en lille ting jeg havede overset nemlig at det ikke er i alle filerne at der står 'OP = 5' og så får jeg en fejlmelding. kan man ikke lave det sådan at programmet er ligeglad med fejlen ( Try..Eexcept) elller hvis programmet ikke finder ' OP = 5' så hopper det videre til næste fil
Der burde ikke være problemer når 'op = 5' ikke optræder - den springer den bare over (det virker ihvertfald her hos mig), men der kan være problemer hvis der ligger f.eks en .exe-fil. Så får du fejlen: 'line too long'. Hvis dine bearbejdnings-filer har en extension (f.eks. abcd.mac kan du komme let over det:
if FindFirst(sti+'*.mac', faAnyFile, s) = 0 then
men ellers skulle det være muligt at gribe fejlene med en try-except.
Jeg kigger på det lidt senere. Men check lige hvilken type fejl du får.
procedure TForm1.ret(fil: string); var MyList: TStringList; indx,i: integer; s: string; begin s:= 'op = 5'; MyList := TStringList.create; try MyList.LoadFromFile(fil); except on eDivByZero do begin end else begin MyList.clear; showmessage('Fejl på '+fil); end; end;
Indx := -1; for i := 0 to MyList.Count-1 do if s = MyList.strings[i] then Indx := i;
If (Indx <> -1) then begin memo1.clear; for i := 0 to 13 do memo1.lines.add(MyList.strings[indx+i]);
procedure TForm1.Button1Click(Sender: TObject); var s : TSearchRec; navn,sti: string; begin sti := edit1.text; if FindFirst(sti+'*.*', faAnyFile, s) = 0 then begin repeat if ((s.Attr <> faDirectory) and (s.Name <> '.') and (s.Name <> '..')) then Begin navn := sti+s.Name; Ret(navn); End; until FindNext(s) <> 0; end; Memo1.clear; Label1.caption := ''; end;
procedure TForm1.FormCreate(Sender: TObject); begin memo1.clear; end;
Ok. Bare vend tilbage hvis du skal bruge mere hjælp. 200 point rækker langt. Hold dig til de anbefalede 15-30-60 point. Eventuelt kan man fylde mere i hvis problemet viser sig at være stort. Ellers løber man hurtigt tør for point (og dermed hjælp).
mvh. Henrik
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.