Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.08;
Скачать: CL | DM;

Вниз

While и прочее   Найти похожие ветки 

 
alexdn ©   (2011-10-03 14:59) [0]

и ещё небольшой вопрос, будет ли корректно сделать так:
 for x:=0 to StrList.Count-1 do //задаем цикл до конца файла
  begin
FNamem:="st.txt";
 AssignFile(F_i,FNamem);
  reset(F_i);
 While not eof(F_i) do //задаем цикл до конца файла
  begin

readln(F_i,s);
if StrList[x]=s then StrList[x]:="";

   end;
 closefile(F_i);

 end;
StrList.SaveToFile("1.txt");
 {closefile(F_i);}
StrList.Free;

т.е. не слишком ли часто будет дёргаться reset(F_i); т.е. если раз 100 /цикл в цикле/ винт не улетит?
просто если вынести reset(F_i) за цикл, то While not eof(F_i) do читается только один раз, а потом вроде как указатель в конце файла..


 
Сергей М. ©   (2011-10-03 15:15) [1]

AssignFile смело можно вынести за тело цикла.

> не слишком ли часто

А деваться некуда.
Открыть/переоткрыть текстовый файл в дан.случае можно только таким образом.
Лучше будет отказаться от этого метода доступа к файлу в пользу любого файлстрима, заточенного под доступ к текст.файлам : один раз открыл файл, пробежался по нему, установил позицию в ноль - и беги опять по файлу.


 
alexdn ©   (2011-10-03 15:20) [2]

> Сергей М. ©   (03.10.11 15:15) [1]
Ну 100-300 раз я думаю к летальному исходу винта не приведут..


 
Германн ©   (2011-10-03 15:26) [3]

А взять два стринглиста религия не позволяет?


 
Ega23 ©   (2011-10-03 15:30) [4]

TStringStream


 
Ega23 ©   (2011-10-03 15:31) [5]

Что за задача-то?


 
alexdn ©   (2011-10-03 15:33) [6]

> Ega23 ©   (03.10.11 15:31) [5]
> Что за задача-то?
Да уже вроде как всё, может потом на второй стринг лист перейду, да и то лень)..


 
Ega23 ©   (2011-10-03 15:38) [7]


> Да уже вроде как всё


Тебе из строки нужно выкинуть ненужные символы?


 
icWasya ©   (2011-10-03 16:29) [8]

>т.е. не слишком ли часто будет дёргаться reset(F_i); т.е. если раз 100 /цикл в цикле/ винт не улетит? просто если вынести reset(F_i) за цикл, то While not eof(F_i) do читается только один раз, а потом вроде как указатель в конце файла..

А ты один раз считай в другой StringList и ищи там

var
 ST_i:TStrings;

FNamem:="st.txt";
ST_i:=TStringList.Create;
ST_i.LoadFromFile(FNamem);

for x:=StrList.Count-1 downto do //задаем цикл до конца файла
 begin
  if ST_i.IndexOf(StrList[x])>=0 then
    StrList.Delete(x);

end;
StrList.SaveToFile("1.txt");
ST_i.Free;
StrList.Free;



Страницы: 1 вся ветка

Текущий архив: 2012.01.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1317627511
Очень Злой
2011-10-03 11:38
2012.01.08
Сравнение массивов


2-1317290569
я
2011-09-29 14:02
2012.01.08
ClientDataSet как записать произвольный массив в базу данных (cds


2-1317454345
vgvolk
2011-10-01 11:32
2012.01.08
Разворачивание окна автоматически


2-1317192067
Alex_C
2011-09-28 10:41
2012.01.08
ValueListEditor - вид 3D как в Object Inspector


2-1317112841
lesstab
2011-09-27 12:40
2012.01.08
OnDataChange - хитрость. Не грех ли?