while not eof(oldfile) do begin readln(oldfile, oldfileline); if (pos('START', oldfileline)=1) then storeflag:=true; if storeflag then begin selectedtextlist.add(oldfileline); if pos('MATCHTHIS',oldfileline)>0 then foundit:=true; if (pos('END', oldfileline)=1) then begin storeflag:=false; if foundit then begin if selectedtextlist.count>0 then for loop:=0 to selectedtextlist.count-1 do begin writeln(newfile,selectedtextlist.strings[loop]); end; foundit:=false; end; selectedtextlist.clear; end; end; end; closefile(oldfile);
except begin showmessage('Soemthing is wrong'); end; end; CloseFile(newfile); selectedtextlist.free; end;
Du laver et svar selv og tildeler de allokerede points (tror jeg nok).
I øvrigt har jeg følgende kommentarer til din procedure:
- TStringList har en SaveToFile som du kan bruge istedet for din for-next. - Du bør have CloseFile og SelectedTextList..list.Free inde i en try-finally - Hvad er lettest at læse detteeretlangtogtungtvariabelnavn eller DetteErEtLangtOgTungtVariabelnavn? Synes bedst om den sidste... Brug de store bogstaver (med omtanke). Der er ingen grund til at det ligner noget C'sk ;-)
Har rettet lidt i dit eksempel (funktionaliteten er vist den samme)
var oldfile: TextFile; st : string; StoreFlag: boolean; FoundIt: boolean; SelectedTextList: TStringList; begin StoreFlag := false; FoundIt := false;
SelectedTextList := TStringList.Create;
AssignFile(oldfile,'c:\t\oldtextfile.txt'); Reset(oldfile); try try while not eof(oldfile) do begin readln(oldfile, st); if pos('START', st) <> 0 then StoreFlag := true;
if StoreFlag then begin SelectedTextList.Add(st);
if pos('MATCHTHIS', st) <> 0 then FoundIt := true;
if (pos('END', st) <> 0) then begin StoreFlag := false;
if FoundIt then begin if SelectedTextList.Count > 0 then SelectedTextList.SaveToFile('c:\t\newtextfile.txt'); FoundIt := false; end; SelectedTextList.Clear; end; end; end; // while except on e: exception do ShowMessage('Something''s wrong'#13#10 + e.Message); end; // try finally CloseFile(oldfile); SelectedTextList.free; end; // try
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.